@venizia/ignis-kernel 0.2.0-0 → 0.2.0-10
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/auth/authenticate/common/constants.d.ts +28 -1
- package/dist/cjs/base/auth/authenticate/common/constants.d.ts.map +1 -1
- package/dist/cjs/base/auth/authenticate/common/constants.js +29 -2
- package/dist/cjs/base/auth/authenticate/common/constants.js.map +1 -1
- package/dist/cjs/base/auth/authenticate/common/errors.d.ts +40 -1
- package/dist/cjs/base/auth/authenticate/common/errors.d.ts.map +1 -1
- package/dist/cjs/base/auth/authenticate/common/errors.js +41 -1
- package/dist/cjs/base/auth/authenticate/common/errors.js.map +1 -1
- package/dist/cjs/base/auth/authenticate/common/keys.d.ts +2 -0
- package/dist/cjs/base/auth/authenticate/common/keys.d.ts.map +1 -1
- package/dist/cjs/base/auth/authenticate/common/keys.js +2 -0
- package/dist/cjs/base/auth/authenticate/common/keys.js.map +1 -1
- package/dist/cjs/base/auth/authenticate/common/types.d.ts +147 -1
- package/dist/cjs/base/auth/authenticate/common/types.d.ts.map +1 -1
- package/dist/cjs/base/auth/authenticate/strategies/strategy-registry.d.ts +37 -0
- package/dist/cjs/base/auth/authenticate/strategies/strategy-registry.d.ts.map +1 -1
- package/dist/cjs/base/auth/authenticate/strategies/strategy-registry.js +54 -0
- package/dist/cjs/base/auth/authenticate/strategies/strategy-registry.js.map +1 -1
- package/dist/cjs/base/auth/authorize/builders/policy.builder.d.ts +28 -33
- package/dist/cjs/base/auth/authorize/builders/policy.builder.d.ts.map +1 -1
- package/dist/cjs/base/auth/authorize/builders/policy.builder.js.map +1 -1
- package/dist/cjs/base/auth/authorize/common/constants.d.ts +25 -1
- package/dist/cjs/base/auth/authorize/common/constants.d.ts.map +1 -1
- package/dist/cjs/base/auth/authorize/common/constants.js +12 -18
- package/dist/cjs/base/auth/authorize/common/constants.js.map +1 -1
- package/dist/cjs/base/auth/authorize/common/errors.d.ts +9 -0
- package/dist/cjs/base/auth/authorize/common/errors.d.ts.map +1 -1
- package/dist/cjs/base/auth/authorize/common/errors.js +9 -0
- package/dist/cjs/base/auth/authorize/common/errors.js.map +1 -1
- package/dist/cjs/base/auth/authorize/common/types.d.ts +1 -1
- package/dist/cjs/base/auth/authorize/common/types.d.ts.map +1 -1
- package/dist/cjs/base/auth/authorize/enforcers/enforcer-registry.d.ts +17 -0
- package/dist/cjs/base/auth/authorize/enforcers/enforcer-registry.d.ts.map +1 -1
- package/dist/cjs/base/auth/authorize/enforcers/enforcer-registry.js +39 -3
- package/dist/cjs/base/auth/authorize/enforcers/enforcer-registry.js.map +1 -1
- package/dist/cjs/base/auth/authorize/providers/authorization.provider.d.ts.map +1 -1
- package/dist/cjs/base/auth/authorize/providers/authorization.provider.js +33 -10
- package/dist/cjs/base/auth/authorize/providers/authorization.provider.js.map +1 -1
- package/dist/cjs/base/auth/base/abstract-auth-registry.d.ts +10 -0
- package/dist/cjs/base/auth/base/abstract-auth-registry.d.ts.map +1 -1
- package/dist/cjs/base/auth/base/abstract-auth-registry.js +12 -0
- package/dist/cjs/base/auth/base/abstract-auth-registry.js.map +1 -1
- package/dist/cjs/base/auth/context-variables.d.ts +7 -1
- package/dist/cjs/base/auth/context-variables.d.ts.map +1 -1
- package/dist/cjs/base/controllers/factory/controller.d.ts +1 -1
- package/dist/cjs/base/controllers/factory/controller.d.ts.map +1 -1
- package/dist/cjs/base/controllers/factory/definition.d.ts +1 -1
- package/dist/cjs/base/controllers/factory/definition.d.ts.map +1 -1
- package/dist/cjs/base/controllers/factory/definition.js +3 -5
- package/dist/cjs/base/controllers/factory/definition.js.map +1 -1
- package/dist/cjs/base/controllers/rest/abstract.d.ts.map +1 -1
- package/dist/cjs/base/controllers/rest/abstract.js +10 -0
- package/dist/cjs/base/controllers/rest/abstract.js.map +1 -1
- package/dist/cjs/base/events/common/constants.d.ts +5 -0
- package/dist/cjs/base/events/common/constants.d.ts.map +1 -0
- package/dist/cjs/base/events/common/constants.js +9 -0
- package/dist/cjs/base/events/common/constants.js.map +1 -0
- package/dist/cjs/base/events/common/index.d.ts +3 -0
- package/dist/cjs/base/events/common/index.d.ts.map +1 -0
- package/dist/cjs/base/events/common/index.js +19 -0
- package/dist/cjs/base/events/common/index.js.map +1 -0
- package/dist/cjs/base/events/common/types.d.ts +26 -0
- package/dist/cjs/base/events/common/types.d.ts.map +1 -0
- package/dist/cjs/base/events/common/types.js +3 -0
- package/dist/cjs/base/events/common/types.js.map +1 -0
- package/dist/cjs/base/events/event-bus.d.ts +41 -0
- package/dist/cjs/base/events/event-bus.d.ts.map +1 -0
- package/dist/cjs/base/events/event-bus.js +100 -0
- package/dist/cjs/base/events/event-bus.js.map +1 -0
- package/dist/cjs/base/events/index.d.ts +3 -0
- package/dist/cjs/base/events/index.d.ts.map +1 -0
- package/dist/cjs/base/events/index.js +19 -0
- package/dist/cjs/base/events/index.js.map +1 -0
- package/dist/cjs/base/index.d.ts +1 -0
- package/dist/cjs/base/index.d.ts.map +1 -1
- package/dist/cjs/base/index.js +1 -5
- package/dist/cjs/base/index.js.map +1 -1
- package/dist/cjs/base/metadata/persistents.js +1 -1
- package/dist/cjs/base/metadata/persistents.js.map +1 -1
- package/dist/cjs/base/middlewares/not-found/not-found.middleware.d.ts.map +1 -1
- package/dist/cjs/base/middlewares/not-found/not-found.middleware.js +4 -1
- package/dist/cjs/base/middlewares/not-found/not-found.middleware.js.map +1 -1
- package/dist/cjs/base/repositories/common/constants.d.ts +26 -0
- package/dist/cjs/base/repositories/common/constants.d.ts.map +1 -1
- package/dist/cjs/base/repositories/common/constants.js +29 -1
- package/dist/cjs/base/repositories/common/constants.js.map +1 -1
- package/dist/cjs/base/repositories/core/abstract.d.ts +29 -0
- package/dist/cjs/base/repositories/core/abstract.d.ts.map +1 -1
- package/dist/cjs/base/repositories/core/abstract.js +71 -1
- package/dist/cjs/base/repositories/core/abstract.js.map +1 -1
- package/dist/cjs/base/repositories/index.d.ts +1 -0
- package/dist/cjs/base/repositories/index.d.ts.map +1 -1
- package/dist/cjs/base/repositories/index.js +1 -0
- package/dist/cjs/base/repositories/index.js.map +1 -1
- package/dist/cjs/base/repositories/query-schemas/index.d.ts +26 -3
- package/dist/cjs/base/repositories/query-schemas/index.d.ts.map +1 -1
- package/dist/cjs/base/repositories/query-schemas/index.js +26 -3
- package/dist/cjs/base/repositories/query-schemas/index.js.map +1 -1
- package/dist/cjs/base/repositories/sqls/index.d.ts +2 -0
- package/dist/cjs/base/repositories/sqls/index.d.ts.map +1 -0
- package/dist/cjs/base/repositories/sqls/index.js +18 -0
- package/dist/cjs/base/repositories/sqls/index.js.map +1 -0
- package/dist/cjs/base/repositories/sqls/recursive-tree.d.ts +56 -0
- package/dist/cjs/base/repositories/sqls/recursive-tree.d.ts.map +1 -0
- package/dist/cjs/base/repositories/sqls/recursive-tree.js +148 -0
- package/dist/cjs/base/repositories/sqls/recursive-tree.js.map +1 -0
- package/dist/cjs/helpers/inversion/common/types.d.ts +34 -4
- package/dist/cjs/helpers/inversion/common/types.d.ts.map +1 -1
- package/dist/esm/base/auth/authenticate/common/constants.d.ts +28 -1
- package/dist/esm/base/auth/authenticate/common/constants.d.ts.map +1 -1
- package/dist/esm/base/auth/authenticate/common/constants.js +27 -1
- package/dist/esm/base/auth/authenticate/common/constants.js.map +1 -1
- package/dist/esm/base/auth/authenticate/common/errors.d.ts +40 -1
- package/dist/esm/base/auth/authenticate/common/errors.d.ts.map +1 -1
- package/dist/esm/base/auth/authenticate/common/errors.js +41 -1
- package/dist/esm/base/auth/authenticate/common/errors.js.map +1 -1
- package/dist/esm/base/auth/authenticate/common/keys.d.ts +2 -0
- package/dist/esm/base/auth/authenticate/common/keys.d.ts.map +1 -1
- package/dist/esm/base/auth/authenticate/common/keys.js +2 -0
- package/dist/esm/base/auth/authenticate/common/keys.js.map +1 -1
- package/dist/esm/base/auth/authenticate/common/types.d.ts +147 -1
- package/dist/esm/base/auth/authenticate/common/types.d.ts.map +1 -1
- package/dist/esm/base/auth/authenticate/strategies/strategy-registry.d.ts +37 -0
- package/dist/esm/base/auth/authenticate/strategies/strategy-registry.d.ts.map +1 -1
- package/dist/esm/base/auth/authenticate/strategies/strategy-registry.js +54 -0
- package/dist/esm/base/auth/authenticate/strategies/strategy-registry.js.map +1 -1
- package/dist/esm/base/auth/authorize/builders/policy.builder.d.ts +28 -33
- package/dist/esm/base/auth/authorize/builders/policy.builder.d.ts.map +1 -1
- package/dist/esm/base/auth/authorize/builders/policy.builder.js.map +1 -1
- package/dist/esm/base/auth/authorize/common/constants.d.ts +25 -1
- package/dist/esm/base/auth/authorize/common/constants.d.ts.map +1 -1
- package/dist/esm/base/auth/authorize/common/constants.js +12 -18
- package/dist/esm/base/auth/authorize/common/constants.js.map +1 -1
- package/dist/esm/base/auth/authorize/common/errors.d.ts +9 -0
- package/dist/esm/base/auth/authorize/common/errors.d.ts.map +1 -1
- package/dist/esm/base/auth/authorize/common/errors.js +9 -0
- package/dist/esm/base/auth/authorize/common/errors.js.map +1 -1
- package/dist/esm/base/auth/authorize/common/types.d.ts +1 -1
- package/dist/esm/base/auth/authorize/common/types.d.ts.map +1 -1
- package/dist/esm/base/auth/authorize/enforcers/enforcer-registry.d.ts +17 -0
- package/dist/esm/base/auth/authorize/enforcers/enforcer-registry.d.ts.map +1 -1
- package/dist/esm/base/auth/authorize/enforcers/enforcer-registry.js +39 -3
- package/dist/esm/base/auth/authorize/enforcers/enforcer-registry.js.map +1 -1
- package/dist/esm/base/auth/authorize/providers/authorization.provider.d.ts.map +1 -1
- package/dist/esm/base/auth/authorize/providers/authorization.provider.js +33 -10
- package/dist/esm/base/auth/authorize/providers/authorization.provider.js.map +1 -1
- package/dist/esm/base/auth/base/abstract-auth-registry.d.ts +10 -0
- package/dist/esm/base/auth/base/abstract-auth-registry.d.ts.map +1 -1
- package/dist/esm/base/auth/base/abstract-auth-registry.js +12 -0
- package/dist/esm/base/auth/base/abstract-auth-registry.js.map +1 -1
- package/dist/esm/base/auth/context-variables.d.ts +7 -1
- package/dist/esm/base/auth/context-variables.d.ts.map +1 -1
- package/dist/esm/base/controllers/factory/controller.d.ts +1 -1
- package/dist/esm/base/controllers/factory/controller.d.ts.map +1 -1
- package/dist/esm/base/controllers/factory/definition.d.ts +1 -1
- package/dist/esm/base/controllers/factory/definition.d.ts.map +1 -1
- package/dist/esm/base/controllers/factory/definition.js +4 -6
- package/dist/esm/base/controllers/factory/definition.js.map +1 -1
- package/dist/esm/base/controllers/rest/abstract.d.ts.map +1 -1
- package/dist/esm/base/controllers/rest/abstract.js +10 -0
- package/dist/esm/base/controllers/rest/abstract.js.map +1 -1
- package/dist/esm/base/events/common/constants.d.ts +5 -0
- package/dist/esm/base/events/common/constants.d.ts.map +1 -0
- package/dist/esm/base/events/common/constants.js +5 -0
- package/dist/esm/base/events/common/constants.js.map +1 -0
- package/dist/esm/base/events/common/index.d.ts +3 -0
- package/dist/esm/base/events/common/index.d.ts.map +1 -0
- package/dist/esm/base/events/common/index.js +3 -0
- package/dist/esm/base/events/common/index.js.map +1 -0
- package/dist/esm/base/events/common/types.d.ts +26 -0
- package/dist/esm/base/events/common/types.d.ts.map +1 -0
- package/dist/esm/base/events/common/types.js +2 -0
- package/dist/esm/base/events/common/types.js.map +1 -0
- package/dist/esm/base/events/event-bus.d.ts +41 -0
- package/dist/esm/base/events/event-bus.d.ts.map +1 -0
- package/dist/esm/base/events/event-bus.js +93 -0
- package/dist/esm/base/events/event-bus.js.map +1 -0
- package/dist/esm/base/events/index.d.ts +3 -0
- package/dist/esm/base/events/index.d.ts.map +1 -0
- package/dist/esm/base/events/index.js +3 -0
- package/dist/esm/base/events/index.js.map +1 -0
- package/dist/esm/base/index.d.ts +1 -0
- package/dist/esm/base/index.d.ts.map +1 -1
- package/dist/esm/base/index.js +1 -5
- package/dist/esm/base/index.js.map +1 -1
- package/dist/esm/base/metadata/persistents.js +1 -1
- package/dist/esm/base/metadata/persistents.js.map +1 -1
- package/dist/esm/base/middlewares/not-found/not-found.middleware.d.ts.map +1 -1
- package/dist/esm/base/middlewares/not-found/not-found.middleware.js +4 -1
- package/dist/esm/base/middlewares/not-found/not-found.middleware.js.map +1 -1
- package/dist/esm/base/repositories/common/constants.d.ts +26 -0
- package/dist/esm/base/repositories/common/constants.d.ts.map +1 -1
- package/dist/esm/base/repositories/common/constants.js +26 -0
- package/dist/esm/base/repositories/common/constants.js.map +1 -1
- package/dist/esm/base/repositories/core/abstract.d.ts +29 -0
- package/dist/esm/base/repositories/core/abstract.d.ts.map +1 -1
- package/dist/esm/base/repositories/core/abstract.js +73 -3
- package/dist/esm/base/repositories/core/abstract.js.map +1 -1
- package/dist/esm/base/repositories/index.d.ts +1 -0
- package/dist/esm/base/repositories/index.d.ts.map +1 -1
- package/dist/esm/base/repositories/index.js +1 -0
- package/dist/esm/base/repositories/index.js.map +1 -1
- package/dist/esm/base/repositories/query-schemas/index.d.ts +26 -3
- package/dist/esm/base/repositories/query-schemas/index.d.ts.map +1 -1
- package/dist/esm/base/repositories/query-schemas/index.js +25 -2
- package/dist/esm/base/repositories/query-schemas/index.js.map +1 -1
- package/dist/esm/base/repositories/sqls/index.d.ts +2 -0
- package/dist/esm/base/repositories/sqls/index.d.ts.map +1 -0
- package/dist/esm/base/repositories/sqls/index.js +2 -0
- package/dist/esm/base/repositories/sqls/index.js.map +1 -0
- package/dist/esm/base/repositories/sqls/recursive-tree.d.ts +56 -0
- package/dist/esm/base/repositories/sqls/recursive-tree.d.ts.map +1 -0
- package/dist/esm/base/repositories/sqls/recursive-tree.js +143 -0
- package/dist/esm/base/repositories/sqls/recursive-tree.js.map +1 -0
- package/dist/esm/helpers/inversion/common/types.d.ts +34 -4
- package/dist/esm/helpers/inversion/common/types.d.ts.map +1 -1
- package/package.json +5 -5
|
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.repository = exports.datasource = exports.model = void 0;
|
|
4
4
|
const bindings_1 = require("../../common/bindings");
|
|
5
5
|
const inversion_1 = require("../../helpers/inversion");
|
|
6
|
-
const core_1 = require("@venizia/ignis-helpers/core");
|
|
7
6
|
const common_1 = require("@venizia/ignis-helpers/common");
|
|
7
|
+
const core_1 = require("@venizia/ignis-helpers/core");
|
|
8
8
|
const datasources_1 = require("../datasources");
|
|
9
9
|
/** Registers a model class with its static schema and relations. */
|
|
10
10
|
const model = (metadata) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persistents.js","sourceRoot":"","sources":["../../../../src/base/metadata/persistents.ts"],"names":[],"mappings":";;;AAAA,gDAAsD;AAQtD,mDAAkF;AAClF,
|
|
1
|
+
{"version":3,"file":"persistents.js","sourceRoot":"","sources":["../../../../src/base/metadata/persistents.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"not-found.middleware.d.ts","sourceRoot":"","sources":["../../../../../src/base/middlewares/not-found/not-found.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,eAAO,MAAM,eAAe,GAAI,MAAM;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"not-found.middleware.d.ts","sourceRoot":"","sources":["../../../../../src/base/middlewares/not-found/not-found.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,eAAO,MAAM,eAAe,GAAI,MAAM;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,oBA6BzD,CAAC"}
|
|
@@ -7,7 +7,10 @@ const notFoundHandler = (opts) => {
|
|
|
7
7
|
const { logger = console } = opts;
|
|
8
8
|
const mw = async (context) => {
|
|
9
9
|
const requestId = context.get(common_2.REQUEST_ID_KEY);
|
|
10
|
-
|
|
10
|
+
// WARN, not ERROR: an unrouted path is the callers mistake, and this middleware is installed
|
|
11
|
+
// unconditionally - so scanner traffic filled the dedicated error log and tripped error-volume
|
|
12
|
+
// alerting. The same reasoning is already applied to an expired token elsewhere in the tree.
|
|
13
|
+
logger.warn('[%s] URL NOT FOUND | path: %s | url: %s', requestId, context.req.path, context.req.url);
|
|
11
14
|
return context.json({
|
|
12
15
|
message: 'URL NOT FOUND',
|
|
13
16
|
statusCode: common_1.HTTP.ResultCodes.RS_4.NotFound,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"not-found.middleware.js","sourceRoot":"","sources":["../../../../../src/base/middlewares/not-found/not-found.middleware.ts"],"names":[],"mappings":";;;AACA,0DAAqD;AAErD,sCAA2C;AAEpC,MAAM,eAAe,GAAG,CAAC,IAA0B,EAAE,EAAE;IAC5D,MAAM,EAAE,MAAM,GAAG,OAAO,EAAE,GAAG,IAAI,CAAC;IAElC,MAAM,EAAE,GAAoB,KAAK,EAAC,OAAO,EAAC,EAAE;QAC1C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAc,CAAC,CAAC;QAE9C,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"not-found.middleware.js","sourceRoot":"","sources":["../../../../../src/base/middlewares/not-found/not-found.middleware.ts"],"names":[],"mappings":";;;AACA,0DAAqD;AAErD,sCAA2C;AAEpC,MAAM,eAAe,GAAG,CAAC,IAA0B,EAAE,EAAE;IAC5D,MAAM,EAAE,MAAM,GAAG,OAAO,EAAE,GAAG,IAAI,CAAC;IAElC,MAAM,EAAE,GAAoB,KAAK,EAAC,OAAO,EAAC,EAAE;QAC1C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAc,CAAC,CAAC;QAE9C,6FAA6F;QAC7F,+FAA+F;QAC/F,6FAA6F;QAC7F,MAAM,CAAC,IAAI,CACT,yCAAyC,EACzC,SAAS,EACT,OAAO,CAAC,GAAG,CAAC,IAAI,EAChB,OAAO,CAAC,GAAG,CAAC,GAAG,CAChB,CAAC;QAEF,OAAO,OAAO,CAAC,IAAI,CACjB;YACE,OAAO,EAAE,eAAe;YACxB,UAAU,EAAE,aAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ;YAC1C,SAAS;YACT,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI;YACtB,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG;SACrB,EACD,aAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAC/B,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AA7BW,QAAA,eAAe,mBA6B1B"}
|
|
@@ -23,6 +23,32 @@ export declare class RepositoryOperationScopes {
|
|
|
23
23
|
}
|
|
24
24
|
/** Valid repository operation scope values. */
|
|
25
25
|
export type TRepositoryOperationScope = TConstValue<typeof RepositoryOperationScopes>;
|
|
26
|
+
/** What a row-scope filter (`@model` settings.scopeFilter) does when `resolve()` returns null/undefined. */
|
|
27
|
+
export declare class ScopeFilterMissingBehaviors {
|
|
28
|
+
/** An unresolved scope matches ZERO rows - the safe reading of "caller's scope is unknown". */
|
|
29
|
+
static readonly DENY = "deny";
|
|
30
|
+
/** Explicit opt-out: no scope is applied. For migrations and background jobs, never inferred from a request. */
|
|
31
|
+
static readonly ALLOW = "allow";
|
|
32
|
+
static readonly SCHEME_SET: Set<string>;
|
|
33
|
+
static isValid(behavior: string): boolean;
|
|
34
|
+
}
|
|
35
|
+
/** Valid scope-filter missing-behavior values. */
|
|
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
|
+
}
|
|
26
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. */
|
|
27
53
|
export declare class RepositoryErrorCodes {
|
|
28
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,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.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;
|
|
@@ -27,6 +27,34 @@ class RepositoryOperationScopes {
|
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
exports.RepositoryOperationScopes = RepositoryOperationScopes;
|
|
30
|
+
/** What a row-scope filter (`@model` settings.scopeFilter) does when `resolve()` returns null/undefined. */
|
|
31
|
+
class ScopeFilterMissingBehaviors {
|
|
32
|
+
/** An unresolved scope matches ZERO rows - the safe reading of "caller's scope is unknown". */
|
|
33
|
+
static { this.DENY = 'deny'; }
|
|
34
|
+
/** Explicit opt-out: no scope is applied. For migrations and background jobs, never inferred from a request. */
|
|
35
|
+
static { this.ALLOW = 'allow'; }
|
|
36
|
+
static { this.SCHEME_SET = new Set([this.DENY, this.ALLOW]); }
|
|
37
|
+
static isValid(behavior) {
|
|
38
|
+
return this.SCHEME_SET.has(behavior);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
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;
|
|
30
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. */
|
|
31
59
|
class RepositoryErrorCodes {
|
|
32
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,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"}
|
|
@@ -47,6 +47,35 @@ export declare abstract class AbstractRepository<TDataObject extends object, TPe
|
|
|
47
47
|
protected get defaultLimit(): number | undefined;
|
|
48
48
|
/** Largest `limit` a caller may ask for, when the model declares one; undefined leaves the tier's own default in force. */
|
|
49
49
|
protected get maxLimit(): number | undefined;
|
|
50
|
+
/**
|
|
51
|
+
* Both bounds, in one place, for every tier.
|
|
52
|
+
*
|
|
53
|
+
* The upper bound is the point: `@model({ settings: { maxLimit } })` is public and validated at
|
|
54
|
+
* decoration time, but the relational tier read it nowhere, so `maxLimit: 2` still issued
|
|
55
|
+
* `LIMIT 50000000`.
|
|
56
|
+
*
|
|
57
|
+
* The lower bound matters just as much and is easy to miss: a NEGATIVE limit is not a smaller
|
|
58
|
+
* page. Drizzle renders the LIMIT clause only when the value is `>= 0`, so a negative one removes
|
|
59
|
+
* the clause and returns the whole table. The wire schema now rejects it too, but a server-side
|
|
60
|
+
* caller reaches this method without passing through the schema at all.
|
|
61
|
+
*/
|
|
62
|
+
protected assertLimitWithinCeiling(opts: {
|
|
63
|
+
limit?: number;
|
|
64
|
+
scope?: string;
|
|
65
|
+
}): void;
|
|
66
|
+
/**
|
|
67
|
+
* The whole filter, relations included. Checking only the top-level `limit` left the identical
|
|
68
|
+
* defect reachable one level down: a relation scope's negative limit drops Drizzle's LIMIT clause
|
|
69
|
+
* for that relation and loads the entire related table.
|
|
70
|
+
*
|
|
71
|
+
* A relation's limit gets the SHAPE check only, not a ceiling. The ceiling belongs to the
|
|
72
|
+
* relation's own model, which this repository cannot resolve - claiming otherwise would enforce
|
|
73
|
+
* the parent's `maxLimit` on a different entity.
|
|
74
|
+
*/
|
|
75
|
+
protected assertFilterLimits(opts: {
|
|
76
|
+
filter?: TFilter;
|
|
77
|
+
scope?: string;
|
|
78
|
+
}): void;
|
|
50
79
|
/** Resolves the entity instance from @repository metadata on first access. */
|
|
51
80
|
protected resolveEntity(): AbstractEntity;
|
|
52
81
|
/** Rejects a verb the current operation scope does not permit. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract.d.ts","sourceRoot":"","sources":["../../../../../src/base/repositories/core/abstract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,UAAU,EAAY,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"abstract.d.ts","sourceRoot":"","sources":["../../../../../src/base/repositories/core/abstract.ts"],"names":[],"mappings":"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"}
|
|
@@ -84,6 +84,76 @@ class AbstractRepository extends core_1.BaseHelper {
|
|
|
84
84
|
get maxLimit() {
|
|
85
85
|
return this.modelSettings?.maxLimit;
|
|
86
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* Both bounds, in one place, for every tier.
|
|
89
|
+
*
|
|
90
|
+
* The upper bound is the point: `@model({ settings: { maxLimit } })` is public and validated at
|
|
91
|
+
* decoration time, but the relational tier read it nowhere, so `maxLimit: 2` still issued
|
|
92
|
+
* `LIMIT 50000000`.
|
|
93
|
+
*
|
|
94
|
+
* The lower bound matters just as much and is easy to miss: a NEGATIVE limit is not a smaller
|
|
95
|
+
* page. Drizzle renders the LIMIT clause only when the value is `>= 0`, so a negative one removes
|
|
96
|
+
* the clause and returns the whole table. The wire schema now rejects it too, but a server-side
|
|
97
|
+
* caller reaches this method without passing through the schema at all.
|
|
98
|
+
*/
|
|
99
|
+
assertLimitWithinCeiling(opts) {
|
|
100
|
+
const { limit, scope = 'find' } = opts;
|
|
101
|
+
if (limit === undefined) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
// The shape check first, because it needs no metadata at all.
|
|
105
|
+
if (!Number.isInteger(limit) || limit < 0) {
|
|
106
|
+
throw (0, core_1.getError)({
|
|
107
|
+
message: `[${this.constructor.name}][${scope}] Invalid 'limit' | Expected a non-negative integer | Got: ${limit}`,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
// `maxLimit` reaches `modelSettings`, which resolves the entity - and THAT throws for a
|
|
111
|
+
// repository with no `@repository` model binding. Such a repository is a misconfiguration this
|
|
112
|
+
// method has no business reporting, and the caller path that used to reach `getDefaultLimit()`
|
|
113
|
+
// never touched it either, because `??` short-circuits when a limit is given. So the ceiling is
|
|
114
|
+
// consulted only when the binding that makes it resolvable is actually present.
|
|
115
|
+
const hasModelBinding = Boolean(inversion_1.MetadataRegistry.getInstance().getRepositoryBinding({ name: this.constructor.name })?.model);
|
|
116
|
+
const ceiling = (hasModelBinding ? this.maxLimit : undefined) ?? common_2.DEFAULT_MAX_LIMIT;
|
|
117
|
+
if (limit > ceiling) {
|
|
118
|
+
throw (0, core_1.getError)({
|
|
119
|
+
message: `[${this.constructor.name}][${scope}] Requested page exceeds this model's limit | requested: ${limit} | maximum: ${ceiling} | raise it with @model settings.maxLimit if larger pages are genuinely needed`,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* The whole filter, relations included. Checking only the top-level `limit` left the identical
|
|
125
|
+
* defect reachable one level down: a relation scope's negative limit drops Drizzle's LIMIT clause
|
|
126
|
+
* for that relation and loads the entire related table.
|
|
127
|
+
*
|
|
128
|
+
* A relation's limit gets the SHAPE check only, not a ceiling. The ceiling belongs to the
|
|
129
|
+
* relation's own model, which this repository cannot resolve - claiming otherwise would enforce
|
|
130
|
+
* the parent's `maxLimit` on a different entity.
|
|
131
|
+
*/
|
|
132
|
+
assertFilterLimits(opts) {
|
|
133
|
+
const { filter, scope = 'find' } = opts;
|
|
134
|
+
if (!filter) {
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
this.assertLimitWithinCeiling({ limit: filter.limit, scope });
|
|
138
|
+
const walk = (inclusions, path) => {
|
|
139
|
+
for (const inclusion of inclusions ?? []) {
|
|
140
|
+
const relationScope = inclusion.scope;
|
|
141
|
+
if (!relationScope) {
|
|
142
|
+
continue;
|
|
143
|
+
}
|
|
144
|
+
const relationPath = `${path}.${inclusion.relation}`;
|
|
145
|
+
const relationLimit = relationScope.limit;
|
|
146
|
+
if (relationLimit !== undefined &&
|
|
147
|
+
(!Number.isInteger(relationLimit) || relationLimit < 0)) {
|
|
148
|
+
throw (0, core_1.getError)({
|
|
149
|
+
message: `[${this.constructor.name}][${scope}] Invalid 'limit' on relation scope | relation: ${relationPath} | Expected a non-negative integer | Got: ${relationLimit}`,
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
walk(relationScope.include, relationPath);
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
walk(filter.include, scope);
|
|
156
|
+
}
|
|
87
157
|
/** Resolves the entity instance from @repository metadata on first access. */
|
|
88
158
|
resolveEntity() {
|
|
89
159
|
const registry = inversion_1.MetadataRegistry.getInstance();
|
|
@@ -119,7 +189,7 @@ class AbstractRepository extends core_1.BaseHelper {
|
|
|
119
189
|
return execution();
|
|
120
190
|
}
|
|
121
191
|
const { maxAttempts, maxTotalMs, signal, backoff, until } = options.retry;
|
|
122
|
-
return
|
|
192
|
+
return core_2.RetryHelper.executeWithRetryUntil({
|
|
123
193
|
operation: [this.constructor.name, operation].join('.'),
|
|
124
194
|
execution,
|
|
125
195
|
until: until ?? defaultUntil,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract.js","sourceRoot":"","sources":["../../../../../src/base/repositories/core/abstract.ts"],"names":[],"mappings":";;;AAGA,mDAAuD;AAEvD,sDAAmE;AACnE,0DAA6D;AAC7D,
|
|
1
|
+
{"version":3,"file":"abstract.js","sourceRoot":"","sources":["../../../../../src/base/repositories/core/abstract.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/base/repositories/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/base/repositories/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,QAAQ,CAAC"}
|
|
@@ -17,4 +17,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
__exportStar(require("./common"), exports);
|
|
18
18
|
__exportStar(require("./core"), exports);
|
|
19
19
|
__exportStar(require("./query-schemas"), exports);
|
|
20
|
+
__exportStar(require("./sqls"), exports);
|
|
20
21
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/base/repositories/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,yCAAuB;AACvB,kDAAgC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/base/repositories/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,yCAAuB;AACvB,kDAAgC;AAChC,yCAAuB"}
|
|
@@ -1,4 +1,27 @@
|
|
|
1
|
-
/**
|
|
2
|
-
import '@hono/zod-openapi';
|
|
3
|
-
export declare const FieldsSchema:
|
|
1
|
+
/** Load order is the point: `@hono/zod-openapi` peers on `zod`, so importing it patches `.openapi()` onto the shared `ZodType` prototype. `buildQuerySchemas` runs at module scope below, and ESM evaluates imports first, so the method exists by the time the decorator is called. Without this import the schemas silently build undecorated whenever this module happens to load before anything else pulls in the OpenAPI layer. */
|
|
2
|
+
import { z } from '@hono/zod-openapi';
|
|
3
|
+
export declare const FieldsSchema: z.ZodOptional<z.ZodUnion<[z.ZodRecord<z.ZodString, z.ZodBoolean>, z.ZodArray<z.ZodString>]>>, FilterSchema: any, InclusionSchema: any, LimitSchema: z.ZodOptional<z.ZodNumber>, OffsetSchema: z.ZodOptional<z.ZodNumber>, OrderBySchema: z.ZodOptional<z.ZodArray<z.ZodString>>, SkipSchema: z.ZodOptional<z.ZodNumber>, WhereSchema: z.ZodUnion<readonly [z.ZodType<any, unknown, z.core.$ZodTypeInternals<any, unknown>>, z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<any, string>>, z.ZodType<any, unknown, z.core.$ZodTypeInternals<any, unknown>>>]>;
|
|
4
|
+
/**
|
|
5
|
+
* The query shape of a route that accepts a `filter`. The framework's own `find`, `findById` and
|
|
6
|
+
* `findOne` use it, and a hand-written route gets the same contract by naming it.
|
|
7
|
+
*
|
|
8
|
+
* `filter` needs no `.optional()` at the call site - {@link FilterSchema} already carries one, so a
|
|
9
|
+
* second is a no-op and so is a trailing `.partial()`.
|
|
10
|
+
*
|
|
11
|
+
* Extend it rather than rebuilding it when a route takes more than `filter`:
|
|
12
|
+
* `FilterQuerySchema.extend({ q: z.string().optional() })`.
|
|
13
|
+
*/
|
|
14
|
+
export declare const FilterQuerySchema: z.ZodObject<{
|
|
15
|
+
filter: any;
|
|
16
|
+
}, z.core.$strip>;
|
|
17
|
+
/**
|
|
18
|
+
* The query shape of a route that accepts conditions and nothing else - `count` and anything shaped
|
|
19
|
+
* like it. `where` is OPTIONAL here.
|
|
20
|
+
*
|
|
21
|
+
* `updateBy` and `deleteBy` deliberately do not use this. They require `where`, because a missing
|
|
22
|
+
* one there rewrites or deletes every row in the table.
|
|
23
|
+
*/
|
|
24
|
+
export declare const WhereQuerySchema: z.ZodObject<{
|
|
25
|
+
where: z.ZodOptional<z.ZodUnion<readonly [z.ZodType<any, unknown, z.core.$ZodTypeInternals<any, unknown>>, z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<any, string>>, z.ZodType<any, unknown, z.core.$ZodTypeInternals<any, unknown>>>]>>;
|
|
26
|
+
}, z.core.$strip>;
|
|
4
27
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/base/repositories/query-schemas/index.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/base/repositories/query-schemas/index.ts"],"names":[],"mappings":"AAEA,yaAAya;AACza,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAOtC,eAAO,MACL,YAAY,gGACZ,YAAY,OACZ,eAAe,OACf,WAAW,8BACX,YAAY,8BACZ,aAAa,0CACb,UAAU,8BACV,WAAW,yNACwC,CAAC;AAEtD;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB;;iBAE5B,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB;;iBAE3B,CAAC"}
|
|
@@ -1,13 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var _a;
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.WhereSchema = exports.SkipSchema = exports.OrderBySchema = exports.OffsetSchema = exports.LimitSchema = exports.InclusionSchema = exports.FilterSchema = exports.FieldsSchema = void 0;
|
|
4
|
+
exports.WhereQuerySchema = exports.FilterQuerySchema = exports.WhereSchema = exports.SkipSchema = exports.OrderBySchema = exports.OffsetSchema = exports.LimitSchema = exports.InclusionSchema = exports.FilterSchema = exports.FieldsSchema = void 0;
|
|
5
5
|
const schemas_1 = require("@venizia/ignis-filter/schemas");
|
|
6
|
-
/**
|
|
7
|
-
require("@hono/zod-openapi");
|
|
6
|
+
/** Load order is the point: `@hono/zod-openapi` peers on `zod`, so importing it patches `.openapi()` onto the shared `ZodType` prototype. `buildQuerySchemas` runs at module scope below, and ESM evaluates imports first, so the method exists by the time the decorator is called. Without this import the schemas silently build undecorated whenever this module happens to load before anything else pulls in the OpenAPI layer. */
|
|
7
|
+
const zod_openapi_1 = require("@hono/zod-openapi");
|
|
8
8
|
/** The schemas themselves live in `@venizia/ignis-filter`, built with plain `zod` so a browser can use them. Documentation metadata is injected here because it is a server concern - `.openapi()` returns a new schema rather than mutating, and three of the decorations sit on inner nodes, so they cannot be applied after the tree is composed. */
|
|
9
9
|
const openApiDecorator = (schema, metadata) => {
|
|
10
10
|
return schema.openapi(metadata);
|
|
11
11
|
};
|
|
12
12
|
_a = (0, schemas_1.buildQuerySchemas)({ decorate: openApiDecorator }), exports.FieldsSchema = _a.FieldsSchema, exports.FilterSchema = _a.FilterSchema, exports.InclusionSchema = _a.InclusionSchema, exports.LimitSchema = _a.LimitSchema, exports.OffsetSchema = _a.OffsetSchema, exports.OrderBySchema = _a.OrderBySchema, exports.SkipSchema = _a.SkipSchema, exports.WhereSchema = _a.WhereSchema;
|
|
13
|
+
/**
|
|
14
|
+
* The query shape of a route that accepts a `filter`. The framework's own `find`, `findById` and
|
|
15
|
+
* `findOne` use it, and a hand-written route gets the same contract by naming it.
|
|
16
|
+
*
|
|
17
|
+
* `filter` needs no `.optional()` at the call site - {@link FilterSchema} already carries one, so a
|
|
18
|
+
* second is a no-op and so is a trailing `.partial()`.
|
|
19
|
+
*
|
|
20
|
+
* Extend it rather than rebuilding it when a route takes more than `filter`:
|
|
21
|
+
* `FilterQuerySchema.extend({ q: z.string().optional() })`.
|
|
22
|
+
*/
|
|
23
|
+
exports.FilterQuerySchema = zod_openapi_1.z.object({ filter: exports.FilterSchema }).openapi({
|
|
24
|
+
description: 'Filter with where, fields, limit, skip, order, include',
|
|
25
|
+
});
|
|
26
|
+
/**
|
|
27
|
+
* The query shape of a route that accepts conditions and nothing else - `count` and anything shaped
|
|
28
|
+
* like it. `where` is OPTIONAL here.
|
|
29
|
+
*
|
|
30
|
+
* `updateBy` and `deleteBy` deliberately do not use this. They require `where`, because a missing
|
|
31
|
+
* one there rewrites or deletes every row in the table.
|
|
32
|
+
*/
|
|
33
|
+
exports.WhereQuerySchema = zod_openapi_1.z.object({ where: exports.WhereSchema.optional() }).openapi({
|
|
34
|
+
description: 'Filter conditions',
|
|
35
|
+
});
|
|
13
36
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/base/repositories/query-schemas/index.ts"],"names":[],"mappings":";;;;AAAA,2DAAyF;AAEzF
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/base/repositories/query-schemas/index.ts"],"names":[],"mappings":";;;;AAAA,2DAAyF;AAEzF,yaAAya;AACza,mDAAsC;AAEtC,wVAAwV;AACxV,MAAM,gBAAgB,GAAqB,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE;IAC9D,OAAQ,MAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC3C,CAAC,CAAC;AAEW,KAST,IAAA,2BAAiB,EAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,EARnD,oBAAY,oBACZ,oBAAY,oBACZ,uBAAe,uBACf,mBAAW,mBACX,oBAAY,oBACZ,qBAAa,qBACb,kBAAU,kBACV,mBAAW,kBACyC;AAEtD;;;;;;;;;GASG;AACU,QAAA,iBAAiB,GAAG,eAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,oBAAY,EAAE,CAAC,CAAC,OAAO,CAAC;IAC1E,WAAW,EAAE,wDAAwD;CACtE,CAAC,CAAC;AAEH;;;;;;GAMG;AACU,QAAA,gBAAgB,GAAG,eAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,mBAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC;IAClF,WAAW,EAAE,mBAAmB;CACjC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/base/repositories/sqls/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./recursive-tree"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/base/repositories/sqls/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { TConstValue } from '@venizia/ignis-helpers/common';
|
|
2
|
+
import type { SQL } from 'drizzle-orm';
|
|
3
|
+
/** Walk direction relative to `rootId`: DOWN follows `parentColumn -> idColumn` (descendants), UP follows the reverse (ancestors). */
|
|
4
|
+
export declare class RecursiveTreeDirections {
|
|
5
|
+
static readonly UP = "UP";
|
|
6
|
+
static readonly DOWN = "DOWN";
|
|
7
|
+
static readonly SCHEME_SET: Set<string>;
|
|
8
|
+
static isValid(direction: string): boolean;
|
|
9
|
+
}
|
|
10
|
+
export type TRecursiveTreeDirection = TConstValue<typeof RecursiveTreeDirections>;
|
|
11
|
+
export interface IRecursiveTreeOptions {
|
|
12
|
+
/** CTE name the caller references in the SELECT it writes around this fragment. */
|
|
13
|
+
name: string;
|
|
14
|
+
/** Runtime-checked with `is(table, Table)`; also the sole dialect selector (Postgres vs SQLite) - see {@link RecursiveTreeSql}. */
|
|
15
|
+
table: unknown;
|
|
16
|
+
rootId: string;
|
|
17
|
+
direction: TRecursiveTreeDirection;
|
|
18
|
+
/**
|
|
19
|
+
* Counts EDGES, not rows: the root is at depth 0, so `N` returns up to `N+1` rows.
|
|
20
|
+
* No default - `0` type-checks but silently produces an empty result, so `walk` throws at
|
|
21
|
+
* runtime for `maxDepth <= 0`.
|
|
22
|
+
*/
|
|
23
|
+
maxDepth: number;
|
|
24
|
+
idColumn?: string;
|
|
25
|
+
parentColumn?: string;
|
|
26
|
+
/** Extra columns, beyond `idColumn`/`parentColumn`, carried into every row of the walk. */
|
|
27
|
+
columns?: string[];
|
|
28
|
+
/** ANDed into the recursive term's WHERE clause - build it with Drizzle's own `sql` tag. */
|
|
29
|
+
recursiveFilter?: SQL;
|
|
30
|
+
/**
|
|
31
|
+
* Emits `path`/`is_cycle` and stops expanding once a row re-visits an id in its own path. Row
|
|
32
|
+
* shape differs per engine and nothing in this signature shows it: Postgres returns a real array
|
|
33
|
+
* and boolean; SQLite returns delimited text and `1`/`0` - so `row.path.length` throws on SQLite
|
|
34
|
+
* and `row.is_cycle === true` is always false there.
|
|
35
|
+
*/
|
|
36
|
+
trackPath?: boolean;
|
|
37
|
+
startDepth?: number;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Returns the CTE definition only - the caller writes its own `SELECT ... FROM <name>` around it.
|
|
41
|
+
* Engine is read off `table`, never asked of the caller, so no option can disagree with the schema.
|
|
42
|
+
* SQLite's `path` is `char(31)`-delimited text, not an array: exact unless an id contains that byte,
|
|
43
|
+
* which this class does not reject. Identifiers cannot be parameterized, so `name`/`idColumn`/
|
|
44
|
+
* `parentColumn`/`columns` are allowlist-checked before reaching a template.
|
|
45
|
+
*/
|
|
46
|
+
export declare class RecursiveTreeSql {
|
|
47
|
+
private static assertValidIdentifier;
|
|
48
|
+
static walk(opts: IRecursiveTreeOptions): SQL;
|
|
49
|
+
/** See {@link RecursiveTreeSql} for why there is no separate `engine` option. */
|
|
50
|
+
private static detectEngine;
|
|
51
|
+
/** Postgres needs an explicit cast so the base and recursive terms agree on the `depth` column's type; SQLite's looser typing does not, but casts anyway for parity and to fail loudly on a non-numeric `startDepth`. */
|
|
52
|
+
private static compileDepthCast;
|
|
53
|
+
/** See {@link RecursiveTreeSql} for why Postgres and SQLite need different `path`/`is_cycle` shapes. */
|
|
54
|
+
private static compileCycleGuardFragments;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=recursive-tree.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recursive-tree.d.ts","sourceRoot":"","sources":["../../../../../src/base/repositories/sqls/recursive-tree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,KAAK,EAAQ,GAAG,EAAE,MAAM,aAAa,CAAC;AAK7C,sIAAsI;AACtI,qBAAa,uBAAuB;IAClC,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ;IAC1B,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAC9B,MAAM,CAAC,QAAQ,CAAC,UAAU,cAAiC;IAE3D,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;CAG3C;AAED,MAAM,MAAM,uBAAuB,GAAG,WAAW,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAoBlF,MAAM,WAAW,qBAAqB;IACpC,mFAAmF;IACnF,IAAI,EAAE,MAAM,CAAC;IAEb,mIAAmI;IACnI,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,uBAAuB,CAAC;IAEnC;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,2FAA2F;IAC3F,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB,4FAA4F;IAC5F,eAAe,CAAC,EAAE,GAAG,CAAC;IAEtB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAUpC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,qBAAqB,GAAG,GAAG;IAgF7C,iFAAiF;IACjF,OAAO,CAAC,MAAM,CAAC,YAAY;IAc3B,yNAAyN;IACzN,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAkB/B,wGAAwG;IACxG,OAAO,CAAC,MAAM,CAAC,0BAA0B;CA0B1C"}
|