@woltz/rich-domain 1.0.0 → 1.2.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/CHANGELOG.md +37 -86
- package/LICENSE +20 -20
- package/dist/base-entity.d.ts +1 -1
- package/dist/base-entity.d.ts.map +1 -1
- package/dist/base-entity.js +15 -19
- package/dist/base-entity.js.map +1 -1
- package/dist/constants.js +1 -4
- package/dist/constants.js.map +1 -1
- package/dist/criteria.d.ts +24 -14
- package/dist/criteria.d.ts.map +1 -1
- package/dist/criteria.js +154 -67
- package/dist/criteria.js.map +1 -1
- package/dist/deep-proxy.d.ts.map +1 -1
- package/dist/deep-proxy.js +19 -9
- package/dist/deep-proxy.js.map +1 -1
- package/dist/domain-event-bus.d.ts +5 -6
- package/dist/domain-event-bus.d.ts.map +1 -1
- package/dist/domain-event-bus.js +4 -17
- package/dist/domain-event-bus.js.map +1 -1
- package/dist/domain-event.d.ts +1 -31
- package/dist/domain-event.d.ts.map +1 -1
- package/dist/domain-event.js +4 -7
- package/dist/domain-event.js.map +1 -1
- package/dist/entity.d.ts +2 -2
- package/dist/entity.js +3 -8
- package/dist/entity.js.map +1 -1
- package/dist/exceptions.d.ts +251 -0
- package/dist/exceptions.d.ts.map +1 -0
- package/dist/exceptions.js +321 -0
- package/dist/exceptions.js.map +1 -0
- package/dist/id.d.ts.map +1 -1
- package/dist/id.js +14 -7
- package/dist/id.js.map +1 -1
- package/dist/index.d.ts +2 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -40
- package/dist/index.js.map +1 -1
- package/dist/mapper.js +1 -5
- package/dist/mapper.js.map +1 -1
- package/dist/paginated-result.d.ts.map +1 -1
- package/dist/paginated-result.js +17 -9
- package/dist/paginated-result.js.map +1 -1
- package/dist/repository/base-repository.js +4 -11
- package/dist/repository/base-repository.js.map +1 -1
- package/dist/repository/index.d.ts +1 -2
- package/dist/repository/index.d.ts.map +1 -1
- package/dist/repository/index.js +3 -26
- package/dist/repository/index.js.map +1 -1
- package/dist/repository/unit-of-work.d.ts +0 -11
- package/dist/repository/unit-of-work.d.ts.map +1 -1
- package/dist/repository/unit-of-work.js +2 -43
- package/dist/repository/unit-of-work.js.map +1 -1
- package/dist/types/criteria.d.ts +31 -7
- package/dist/types/criteria.d.ts.map +1 -1
- package/dist/types/criteria.js +1 -4
- package/dist/types/criteria.js.map +1 -1
- package/dist/types/domain-event.d.ts +32 -0
- package/dist/types/domain-event.d.ts.map +1 -0
- package/dist/types/domain-event.js +2 -0
- package/dist/types/domain-event.js.map +1 -0
- package/dist/types/domain.d.ts +2 -2
- package/dist/types/domain.d.ts.map +1 -1
- package/dist/types/domain.js +1 -2
- package/dist/types/history-tracker.d.ts +1 -1
- package/dist/types/history-tracker.d.ts.map +1 -1
- package/dist/types/history-tracker.js +1 -2
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +7 -22
- package/dist/types/index.js.map +1 -1
- package/dist/types/standard-schema.js +1 -2
- package/dist/types/unit-of-work.js +1 -2
- package/dist/types/utils.js +1 -2
- package/dist/utils/criteria-operator-validation.d.ts +5 -0
- package/dist/utils/criteria-operator-validation.d.ts.map +1 -0
- package/dist/utils/criteria-operator-validation.js +143 -0
- package/dist/utils/criteria-operator-validation.js.map +1 -0
- package/dist/utils/helpers.d.ts +2 -0
- package/dist/utils/helpers.d.ts.map +1 -0
- package/dist/utils/helpers.js +10 -0
- package/dist/utils/helpers.js.map +1 -0
- package/dist/validation-error.js +3 -9
- package/dist/validation-error.js.map +1 -1
- package/dist/value-object.d.ts +1 -1
- package/dist/value-object.d.ts.map +1 -1
- package/dist/value-object.js +7 -14
- package/dist/value-object.js.map +1 -1
- package/eslint.config.js +9 -3
- package/jest.config.js +1 -1
- package/package.json +14 -20
- package/src/base-entity.ts +3 -3
- package/src/criteria.ts +268 -87
- package/src/deep-proxy.ts +50 -38
- package/src/domain-event-bus.ts +152 -166
- package/src/domain-event.ts +53 -90
- package/src/entity.ts +16 -16
- package/src/exceptions.ts +435 -0
- package/src/id.ts +107 -94
- package/src/index.ts +32 -8
- package/src/paginated-result.ts +15 -3
- package/src/repository/index.ts +1 -6
- package/src/repository/unit-of-work.ts +1 -44
- package/src/types/criteria.ts +95 -17
- package/src/types/domain-event.ts +38 -0
- package/src/types/domain.ts +2 -3
- package/src/types/history-tracker.ts +1 -1
- package/src/types/index.ts +1 -0
- package/src/utils/criteria-operator-validation.ts +171 -0
- package/src/utils/helpers.ts +6 -0
- package/src/validation-error.ts +97 -97
- package/src/value-object.ts +3 -6
- package/tests/criteria.test.ts +324 -1
- package/tests/domain-events.test.ts +431 -445
- package/tests/entity-validation.test.ts +1 -1
- package/tests/entity.test.ts +33 -33
- package/tests/repository.test.ts +4 -2
- package/tests/utils.ts +254 -151
- package/tests/value-object-validation.test.ts +0 -9
- package/tsconfig.json +2 -24
- package/.github/workflows/ci.yml +0 -40
- package/.husky/commit-msg +0 -1
- package/.husky/pre-commit +0 -1
- package/.vscode/settings.json +0 -3
- package/commitlint.config.js +0 -23
- package/dist/repository/in-memory-repository.d.ts +0 -50
- package/dist/repository/in-memory-repository.d.ts.map +0 -1
- package/dist/repository/in-memory-repository.js +0 -97
- package/dist/repository/in-memory-repository.js.map +0 -1
- package/src/repository/in-memory-repository.ts +0 -116
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/repository/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAGnC,cAAc,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/repository/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAGnC,cAAc,mBAAmB,CAAC;AAGlC,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/repository/index.js
CHANGED
|
@@ -1,33 +1,10 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// ============================================================================
|
|
3
2
|
// Repository Module - Clean exports
|
|
4
3
|
// ============================================================================
|
|
5
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
-
}
|
|
11
|
-
Object.defineProperty(o, k2, desc);
|
|
12
|
-
}) : (function(o, m, k, k2) {
|
|
13
|
-
if (k2 === undefined) k2 = k;
|
|
14
|
-
o[k2] = m[k];
|
|
15
|
-
}));
|
|
16
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
17
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
18
|
-
};
|
|
19
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.InMemoryUnitOfWork = exports.BaseTransactionContext = exports.UnitOfWork = exports.InMemoryRepository = exports.Mapper = void 0;
|
|
21
4
|
// Mapper
|
|
22
|
-
|
|
23
|
-
Object.defineProperty(exports, "Mapper", { enumerable: true, get: function () { return mapper_1.Mapper; } });
|
|
5
|
+
export { Mapper } from "../mapper";
|
|
24
6
|
// Base implementations
|
|
25
|
-
|
|
26
|
-
var in_memory_repository_1 = require("./in-memory-repository");
|
|
27
|
-
Object.defineProperty(exports, "InMemoryRepository", { enumerable: true, get: function () { return in_memory_repository_1.InMemoryRepository; } });
|
|
7
|
+
export * from "./base-repository";
|
|
28
8
|
// Unit of Work
|
|
29
|
-
|
|
30
|
-
Object.defineProperty(exports, "UnitOfWork", { enumerable: true, get: function () { return unit_of_work_1.UnitOfWork; } });
|
|
31
|
-
Object.defineProperty(exports, "BaseTransactionContext", { enumerable: true, get: function () { return unit_of_work_1.BaseTransactionContext; } });
|
|
32
|
-
Object.defineProperty(exports, "InMemoryUnitOfWork", { enumerable: true, get: function () { return unit_of_work_1.InMemoryUnitOfWork; } });
|
|
9
|
+
export { UnitOfWork, BaseTransactionContext } from "./unit-of-work";
|
|
33
10
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/repository/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/repository/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,oCAAoC;AACpC,+EAA+E;AAE/E,SAAS;AACT,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,uBAAuB;AACvB,cAAc,mBAAmB,CAAC;AAElC,eAAe;AACf,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -56,15 +56,4 @@ export declare abstract class BaseTransactionContext implements TransactionConte
|
|
|
56
56
|
isActive(): boolean;
|
|
57
57
|
protected markInactive(): void;
|
|
58
58
|
}
|
|
59
|
-
/**
|
|
60
|
-
* In-Memory Unit of Work (for testing)
|
|
61
|
-
*/
|
|
62
|
-
export declare class InMemoryUnitOfWork extends UnitOfWork {
|
|
63
|
-
private committed;
|
|
64
|
-
private rolledBack;
|
|
65
|
-
begin(): Promise<TransactionContext>;
|
|
66
|
-
protected createRepository<TRepo>(RepositoryClass: new (...args: any[]) => TRepo): TRepo;
|
|
67
|
-
isCommitted(): boolean;
|
|
68
|
-
isRolledBack(): boolean;
|
|
69
|
-
}
|
|
70
59
|
//# sourceMappingURL=unit-of-work.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unit-of-work.d.ts","sourceRoot":"","sources":["../../src/repository/unit-of-work.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,8BAAsB,UAAW,YAAW,WAAW;IACrD,SAAS,CAAC,cAAc,EAAE,kBAAkB,GAAG,IAAI,CAAQ;IAC3D,SAAS,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAa;IAExD,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAE7C;;;OAGG;IACG,WAAW,CAAC,CAAC,EACjB,IAAI,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,OAAO,CAAC,CAAC,CAAC,GAC5C,OAAO,CAAC,CAAC,CAAC;IAkBb;;OAEG;IACH,aAAa,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"unit-of-work.d.ts","sourceRoot":"","sources":["../../src/repository/unit-of-work.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,8BAAsB,UAAW,YAAW,WAAW;IACrD,SAAS,CAAC,cAAc,EAAE,kBAAkB,GAAG,IAAI,CAAQ;IAC3D,SAAS,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAa;IAExD,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAE7C;;;OAGG;IACG,WAAW,CAAC,CAAC,EACjB,IAAI,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,OAAO,CAAC,CAAC,CAAC,GAC5C,OAAO,CAAC,CAAC,CAAC;IAkBb;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,KAAK,GAAG,KAAK;IAY3E;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,EACvC,eAAe,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,KAAK,GAC7C,KAAK;CACT;AAED;;GAEG;AACH,8BAAsB,sBAAuB,YAAW,kBAAkB;IACxE,SAAS,CAAC,SAAS,UAAQ;IAE3B,QAAQ,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAChC,QAAQ,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAElC,QAAQ,IAAI,OAAO;IAInB,SAAS,CAAC,YAAY,IAAI,IAAI;CAG/B"}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// ============================================================================
|
|
3
2
|
// Unit of Work - Simple transaction management
|
|
4
3
|
// ============================================================================
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.InMemoryUnitOfWork = exports.BaseTransactionContext = exports.UnitOfWork = void 0;
|
|
7
4
|
/**
|
|
8
5
|
* Abstract Unit of Work
|
|
9
6
|
* Provides transaction management across multiple repositories
|
|
@@ -33,7 +30,7 @@ exports.InMemoryUnitOfWork = exports.BaseTransactionContext = exports.UnitOfWork
|
|
|
33
30
|
* }
|
|
34
31
|
* ```
|
|
35
32
|
*/
|
|
36
|
-
class UnitOfWork {
|
|
33
|
+
export class UnitOfWork {
|
|
37
34
|
constructor() {
|
|
38
35
|
this.currentContext = null;
|
|
39
36
|
this.repositoryCache = new Map();
|
|
@@ -73,11 +70,10 @@ class UnitOfWork {
|
|
|
73
70
|
return repo;
|
|
74
71
|
}
|
|
75
72
|
}
|
|
76
|
-
exports.UnitOfWork = UnitOfWork;
|
|
77
73
|
/**
|
|
78
74
|
* Base Transaction Context
|
|
79
75
|
*/
|
|
80
|
-
class BaseTransactionContext {
|
|
76
|
+
export class BaseTransactionContext {
|
|
81
77
|
constructor() {
|
|
82
78
|
this._isActive = true;
|
|
83
79
|
}
|
|
@@ -88,41 +84,4 @@ class BaseTransactionContext {
|
|
|
88
84
|
this._isActive = false;
|
|
89
85
|
}
|
|
90
86
|
}
|
|
91
|
-
exports.BaseTransactionContext = BaseTransactionContext;
|
|
92
|
-
/**
|
|
93
|
-
* In-Memory Unit of Work (for testing)
|
|
94
|
-
*/
|
|
95
|
-
class InMemoryUnitOfWork extends UnitOfWork {
|
|
96
|
-
constructor() {
|
|
97
|
-
super(...arguments);
|
|
98
|
-
this.committed = false;
|
|
99
|
-
this.rolledBack = false;
|
|
100
|
-
}
|
|
101
|
-
async begin() {
|
|
102
|
-
this.currentContext = new InMemoryTransactionContext();
|
|
103
|
-
this.committed = false;
|
|
104
|
-
this.rolledBack = false;
|
|
105
|
-
return this.currentContext;
|
|
106
|
-
}
|
|
107
|
-
createRepository(RepositoryClass) {
|
|
108
|
-
// For in-memory, just create a new instance
|
|
109
|
-
// In real implementation, pass transaction client
|
|
110
|
-
return new RepositoryClass();
|
|
111
|
-
}
|
|
112
|
-
isCommitted() {
|
|
113
|
-
return this.committed;
|
|
114
|
-
}
|
|
115
|
-
isRolledBack() {
|
|
116
|
-
return this.rolledBack;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
exports.InMemoryUnitOfWork = InMemoryUnitOfWork;
|
|
120
|
-
class InMemoryTransactionContext extends BaseTransactionContext {
|
|
121
|
-
async commit() {
|
|
122
|
-
this.markInactive();
|
|
123
|
-
}
|
|
124
|
-
async rollback() {
|
|
125
|
-
this.markInactive();
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
87
|
//# sourceMappingURL=unit-of-work.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unit-of-work.js","sourceRoot":"","sources":["../../src/repository/unit-of-work.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"unit-of-work.js","sourceRoot":"","sources":["../../src/repository/unit-of-work.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,+CAA+C;AAC/C,+EAA+E;AAI/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,OAAgB,UAAU;IAAhC;QACY,mBAAc,GAA8B,IAAI,CAAC;QACjD,oBAAe,GAAqB,IAAI,GAAG,EAAE,CAAC;IAiD1D,CAAC;IA7CC;;;OAGG;IACH,KAAK,CAAC,WAAW,CACf,IAA6C;QAE7C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QAE/B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACnB,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC;YACvB,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,aAAa,CAAQ,eAA8C;QACjE,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC;QAEjC,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;QACpD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;CAQF;AAED;;GAEG;AACH,MAAM,OAAgB,sBAAsB;IAA5C;QACY,cAAS,GAAG,IAAI,CAAC;IAY7B,CAAC;IAPC,QAAQ;QACN,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAES,YAAY;QACpB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;CACF"}
|
package/dist/types/criteria.d.ts
CHANGED
|
@@ -1,16 +1,31 @@
|
|
|
1
1
|
import { Primitive } from "./utils";
|
|
2
2
|
export declare const FILTER_OPERATORS: readonly ["equals", "notEquals", "greaterThan", "greaterThanOrEqual", "lessThan", "lessThanOrEqual", "contains", "startsWith", "endsWith", "in", "notIn", "between", "isNull", "isNotNull"];
|
|
3
|
-
export type FilterValueFor<T> = T | (T extends number | Date ? [T, T] : never) | T[] | null;
|
|
4
|
-
export type PathValue<T, P extends string> = P extends `${infer K}.${infer Rest}` ? K extends keyof T ? PathValue<T[K], Rest> : never : P extends keyof T ? T[P] : never;
|
|
5
3
|
export type FilterOperator = (typeof FILTER_OPERATORS)[number];
|
|
4
|
+
export type StringOperators = "equals" | "notEquals" | "contains" | "startsWith" | "endsWith" | "in" | "notIn" | "isNull" | "isNotNull";
|
|
5
|
+
export type NumberOperators = "equals" | "notEquals" | "greaterThan" | "greaterThanOrEqual" | "lessThan" | "lessThanOrEqual" | "in" | "notIn" | "between" | "isNull" | "isNotNull";
|
|
6
|
+
export type DateOperators = "equals" | "notEquals" | "greaterThan" | "greaterThanOrEqual" | "lessThan" | "lessThanOrEqual" | "in" | "notIn" | "between" | "isNull" | "isNotNull";
|
|
7
|
+
export type BooleanOperators = "equals" | "notEquals" | "isNull" | "isNotNull";
|
|
8
|
+
export type ArrayOperators = "in" | "notIn" | "isNull" | "isNotNull";
|
|
9
|
+
export type OperatorsForType<T> = T extends string ? StringOperators : T extends number ? NumberOperators : T extends Date ? DateOperators : T extends boolean ? BooleanOperators : T extends Array<any> ? ArrayOperators : FilterOperator;
|
|
10
|
+
export type FilterValueFor<T> = T | (T extends number | Date ? [T, T] : never) | T[] | null;
|
|
11
|
+
export type PathValue<T, P extends string> = P extends `${infer K}.${infer Rest}` ? K extends keyof T ? T[K] extends Array<infer U> ? PathValue<U, Rest> : PathValue<T[K], Rest> : never : P extends keyof T ? T[P] : never;
|
|
6
12
|
export interface Filter<TField = string, TValue = unknown> {
|
|
7
13
|
field: TField;
|
|
8
|
-
operator: FilterOperator
|
|
14
|
+
operator: unknown extends TValue ? FilterOperator : OperatorsForType<TValue>;
|
|
9
15
|
value: TValue;
|
|
16
|
+
options?: CriteriaOptions;
|
|
10
17
|
}
|
|
11
18
|
export type TypedFilter<T> = {
|
|
12
|
-
[K in FieldPath<T>]:
|
|
19
|
+
[K in FieldPath<T>]: {
|
|
20
|
+
field: K;
|
|
21
|
+
operator: OperatorsForType<NonNullable<PathValue<T, K>>>;
|
|
22
|
+
value: FilterValueFor<NonNullable<PathValue<T, K>>>;
|
|
23
|
+
options?: CriteriaOptions;
|
|
24
|
+
};
|
|
13
25
|
}[FieldPath<T>];
|
|
26
|
+
export type CriteriaAdapter<Input, Output> = {
|
|
27
|
+
[K in FieldPath<Input>]?: FieldPath<Output>;
|
|
28
|
+
};
|
|
14
29
|
export type OrderDirection = "asc" | "desc";
|
|
15
30
|
export interface Order {
|
|
16
31
|
field: string;
|
|
@@ -21,6 +36,10 @@ export interface Pagination {
|
|
|
21
36
|
limit: number;
|
|
22
37
|
offset: number;
|
|
23
38
|
}
|
|
39
|
+
export interface Search<T> {
|
|
40
|
+
fields: FieldPath<T>[];
|
|
41
|
+
value: string;
|
|
42
|
+
}
|
|
24
43
|
export interface PaginationMeta {
|
|
25
44
|
page: number;
|
|
26
45
|
limit: number;
|
|
@@ -29,7 +48,12 @@ export interface PaginationMeta {
|
|
|
29
48
|
hasNext: boolean;
|
|
30
49
|
hasPrevious: boolean;
|
|
31
50
|
}
|
|
32
|
-
export
|
|
33
|
-
|
|
34
|
-
}
|
|
51
|
+
export interface CriteriaOptions {
|
|
52
|
+
quantifier?: "some" | "every" | "none";
|
|
53
|
+
}
|
|
54
|
+
type ExcludeBuiltInKeys<T> = Exclude<keyof T, keyof any[] | number | symbol>;
|
|
55
|
+
export type FieldPath<T> = T extends Primitive ? never : {
|
|
56
|
+
[K in ExcludeBuiltInKeys<T> & string]: NonNullable<T[K]> extends Primitive ? K : NonNullable<T[K]> extends Array<infer U> ? U extends Primitive ? K : K | `${K}.${FieldPath<U>}` : K | `${K}.${FieldPath<NonNullable<T[K]>>}`;
|
|
57
|
+
}[ExcludeBuiltInKeys<T> & string];
|
|
58
|
+
export {};
|
|
35
59
|
//# sourceMappingURL=criteria.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"criteria.d.ts","sourceRoot":"","sources":["../../src/types/criteria.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,eAAO,MAAM,gBAAgB,6LAenB,CAAC;AAEX,MAAM,MAAM,cAAc,CAAC,CAAC,IACxB,CAAC,GACD,CAAC,CAAC,SAAS,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"criteria.d.ts","sourceRoot":"","sources":["../../src/types/criteria.ts"],"names":[],"mappings":"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"}
|
package/dist/types/criteria.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"criteria.js","sourceRoot":"","sources":["../../src/types/criteria.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"criteria.js","sourceRoot":"","sources":["../../src/types/criteria.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,QAAQ;IACR,WAAW;IACX,aAAa;IACb,oBAAoB;IACpB,UAAU;IACV,iBAAiB;IACjB,UAAU;IACV,YAAY;IACZ,UAAU;IACV,IAAI;IACJ,OAAO;IACP,SAAS;IACT,QAAQ;IACR,WAAW;CACH,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interface for all domain events
|
|
3
|
+
*/
|
|
4
|
+
export interface IDomainEvent {
|
|
5
|
+
/**
|
|
6
|
+
* Unique identifier for this event occurrence
|
|
7
|
+
*/
|
|
8
|
+
readonly eventId: string;
|
|
9
|
+
/**
|
|
10
|
+
* When the event occurred
|
|
11
|
+
*/
|
|
12
|
+
readonly occurredOn: Date;
|
|
13
|
+
/**
|
|
14
|
+
* Name/type of the event (e.g., "UserCreated", "OrderPlaced")
|
|
15
|
+
*/
|
|
16
|
+
readonly eventName: string;
|
|
17
|
+
/**
|
|
18
|
+
* ID of the aggregate that raised this event
|
|
19
|
+
*/
|
|
20
|
+
readonly aggregateId: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Event handler function type
|
|
24
|
+
*/
|
|
25
|
+
export type DomainEventHandler<T extends IDomainEvent = IDomainEvent> = (event: T) => void | Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Event handler class type
|
|
28
|
+
*/
|
|
29
|
+
export interface IDomainEventHandler<T extends IDomainEvent = IDomainEvent> {
|
|
30
|
+
handle(event: T): void | Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=domain-event.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain-event.d.ts","sourceRoot":"","sources":["../../src/types/domain-event.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,IAAI,CACtE,KAAK,EAAE,CAAC,KACL,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY;IACxE,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain-event.js","sourceRoot":"","sources":["../../src/types/domain-event.ts"],"names":[],"mappings":""}
|
package/dist/types/domain.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ValidationConfig } from "..";
|
|
2
2
|
import { Id } from "../id";
|
|
3
|
+
import { StandardSchema } from "./standard-schema";
|
|
3
4
|
export type EntityId = string | number;
|
|
4
5
|
export interface BaseProps {
|
|
5
6
|
id: Id;
|
|
@@ -14,7 +15,6 @@ export interface VOHooks<T, E> {
|
|
|
14
15
|
onBeforeUpdate?: (entity: E, snapshot: T) => boolean;
|
|
15
16
|
onCreate?: (entity: E) => void;
|
|
16
17
|
rules?: (entity: E) => void;
|
|
17
|
-
defaultValues?: Partial<T>;
|
|
18
18
|
}
|
|
19
19
|
export interface EntityHooks<T extends BaseProps, E> {
|
|
20
20
|
onBeforeUpdate?: (entity: E, snapshot: T) => boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../src/types/domain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../src/types/domain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,IAAI,CAAC;AACtC,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAEvC,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,EAAE,CAAC;CACR;AAED,UAAU,gBAAgB,CAAC,CAAC;IAC1B,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC;AACtD,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAElD,MAAM,WAAW,OAAO,CAAC,CAAC,EAAE,CAAC;IAC3B,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,OAAO,CAAC;IACrD,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;IAC/B,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;CAC7B;AAGD,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC;IACjD,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,OAAO,CAAC;IACrD,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;IAC/B,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC;IACvD,KAAK,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;IAClB,UAAU,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAC3B"}
|
package/dist/types/domain.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history-tracker.d.ts","sourceRoot":"","sources":["../../src/types/history-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"history-tracker.d.ts","sourceRoot":"","sources":["../../src/types/history-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE7D,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,QAAQ,EAAE,CAAC,GAAG,SAAS,CAAC;IACxB,OAAO,EAAE,CAAC,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,QAAQ,EAAE,CAAC,EAAE,CAAC;IACd,QAAQ,EAAE,CAAC,EAAE,CAAC;IACd,QAAQ,EAAE,CAAC,EAAE,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AACpE,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AAEtE,MAAM,WAAW,oBAAoB,CAAC,CAAC;IACrC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;CAC9B;AAED,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,SAAS,IAAI;KACnD,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,GACrD,iBAAiB,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAClD,oBAAoB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC7C,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,GAAG,CAAC;IACnB,YAAY,EAAE,GAAG,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC"}
|
package/dist/types/index.js
CHANGED
|
@@ -1,23 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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("./criteria"), exports);
|
|
18
|
-
__exportStar(require("./domain"), exports);
|
|
19
|
-
__exportStar(require("./history-tracker"), exports);
|
|
20
|
-
__exportStar(require("./standard-schema"), exports);
|
|
21
|
-
__exportStar(require("./utils"), exports);
|
|
22
|
-
__exportStar(require("./unit-of-work"), exports);
|
|
1
|
+
export * from "./criteria";
|
|
2
|
+
export * from "./domain";
|
|
3
|
+
export * from "./history-tracker";
|
|
4
|
+
export * from "./standard-schema";
|
|
5
|
+
export * from "./utils";
|
|
6
|
+
export * from "./unit-of-work";
|
|
7
|
+
export * from "./domain-event";
|
|
23
8
|
//# sourceMappingURL=index.js.map
|
package/dist/types/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC"}
|
package/dist/types/utils.js
CHANGED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { FilterOperator } from "../types";
|
|
2
|
+
export declare function isValidOperatorForType(value: unknown, operator: FilterOperator): boolean;
|
|
3
|
+
export declare function getValidOperatorsForType(value: unknown): FilterOperator[];
|
|
4
|
+
export declare function isOperator(value: string): value is FilterOperator;
|
|
5
|
+
//# sourceMappingURL=criteria-operator-validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"criteria-operator-validation.d.ts","sourceRoot":"","sources":["../../src/utils/criteria-operator-validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,cAAc,EAGf,MAAM,UAAU,CAAC;AAElB,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,cAAc,GACvB,OAAO,CAyFT;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,EAAE,CA8DzE;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,cAAc,CAEjE"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { FILTER_OPERATORS, } from "../types";
|
|
2
|
+
export function isValidOperatorForType(value, operator) {
|
|
3
|
+
// Handle null/undefined
|
|
4
|
+
if (value === null || value === undefined) {
|
|
5
|
+
return ["isNull", "isNotNull", "equals", "notEquals"].includes(operator);
|
|
6
|
+
}
|
|
7
|
+
// Special case: between operator with array [min, max]
|
|
8
|
+
if (operator === "between" && Array.isArray(value) && value.length === 2) {
|
|
9
|
+
// Validate based on the type of the first element
|
|
10
|
+
const elementType = typeof value[0];
|
|
11
|
+
if (elementType === "number" || value[0] instanceof Date) {
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
const valueType = typeof value;
|
|
17
|
+
// String operators
|
|
18
|
+
if (valueType === "string") {
|
|
19
|
+
const validOps = [
|
|
20
|
+
"equals",
|
|
21
|
+
"notEquals",
|
|
22
|
+
"contains",
|
|
23
|
+
"startsWith",
|
|
24
|
+
"endsWith",
|
|
25
|
+
"in",
|
|
26
|
+
"notIn",
|
|
27
|
+
"isNull",
|
|
28
|
+
"isNotNull",
|
|
29
|
+
];
|
|
30
|
+
return validOps.includes(operator);
|
|
31
|
+
}
|
|
32
|
+
// Number operators
|
|
33
|
+
if (valueType === "number") {
|
|
34
|
+
const validOps = [
|
|
35
|
+
"equals",
|
|
36
|
+
"notEquals",
|
|
37
|
+
"greaterThan",
|
|
38
|
+
"greaterThanOrEqual",
|
|
39
|
+
"lessThan",
|
|
40
|
+
"lessThanOrEqual",
|
|
41
|
+
"in",
|
|
42
|
+
"notIn",
|
|
43
|
+
"between",
|
|
44
|
+
"isNull",
|
|
45
|
+
"isNotNull",
|
|
46
|
+
];
|
|
47
|
+
return validOps.includes(operator);
|
|
48
|
+
}
|
|
49
|
+
// Boolean operators
|
|
50
|
+
if (valueType === "boolean") {
|
|
51
|
+
const validOps = [
|
|
52
|
+
"equals",
|
|
53
|
+
"notEquals",
|
|
54
|
+
"isNull",
|
|
55
|
+
"isNotNull",
|
|
56
|
+
];
|
|
57
|
+
return validOps.includes(operator);
|
|
58
|
+
}
|
|
59
|
+
// Date operators
|
|
60
|
+
if (value instanceof Date) {
|
|
61
|
+
const validOps = [
|
|
62
|
+
"equals",
|
|
63
|
+
"notEquals",
|
|
64
|
+
"greaterThan",
|
|
65
|
+
"greaterThanOrEqual",
|
|
66
|
+
"lessThan",
|
|
67
|
+
"lessThanOrEqual",
|
|
68
|
+
"in",
|
|
69
|
+
"notIn",
|
|
70
|
+
"between",
|
|
71
|
+
"isNull",
|
|
72
|
+
"isNotNull",
|
|
73
|
+
];
|
|
74
|
+
return validOps.includes(operator);
|
|
75
|
+
}
|
|
76
|
+
// Array operators
|
|
77
|
+
if (Array.isArray(value)) {
|
|
78
|
+
const validOps = ["in", "notIn", "isNull", "isNotNull"];
|
|
79
|
+
return validOps.includes(operator);
|
|
80
|
+
}
|
|
81
|
+
// For unknown types, allow all operators
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
export function getValidOperatorsForType(value) {
|
|
85
|
+
if (value === null || value === undefined) {
|
|
86
|
+
return ["isNull", "isNotNull", "equals", "notEquals"];
|
|
87
|
+
}
|
|
88
|
+
const valueType = typeof value;
|
|
89
|
+
if (valueType === "string" && Number.isNaN(Number(value))) {
|
|
90
|
+
return [
|
|
91
|
+
"equals",
|
|
92
|
+
"notEquals",
|
|
93
|
+
"contains",
|
|
94
|
+
"startsWith",
|
|
95
|
+
"endsWith",
|
|
96
|
+
"in",
|
|
97
|
+
"notIn",
|
|
98
|
+
"isNull",
|
|
99
|
+
"isNotNull",
|
|
100
|
+
];
|
|
101
|
+
}
|
|
102
|
+
if (valueType === "number") {
|
|
103
|
+
return [
|
|
104
|
+
"equals",
|
|
105
|
+
"notEquals",
|
|
106
|
+
"greaterThan",
|
|
107
|
+
"greaterThanOrEqual",
|
|
108
|
+
"lessThan",
|
|
109
|
+
"lessThanOrEqual",
|
|
110
|
+
"in",
|
|
111
|
+
"notIn",
|
|
112
|
+
"between",
|
|
113
|
+
"isNull",
|
|
114
|
+
"isNotNull",
|
|
115
|
+
];
|
|
116
|
+
}
|
|
117
|
+
if (valueType === "boolean") {
|
|
118
|
+
return ["equals", "notEquals", "isNull", "isNotNull"];
|
|
119
|
+
}
|
|
120
|
+
if (value instanceof Date) {
|
|
121
|
+
return [
|
|
122
|
+
"equals",
|
|
123
|
+
"notEquals",
|
|
124
|
+
"greaterThan",
|
|
125
|
+
"greaterThanOrEqual",
|
|
126
|
+
"lessThan",
|
|
127
|
+
"lessThanOrEqual",
|
|
128
|
+
"in",
|
|
129
|
+
"notIn",
|
|
130
|
+
"between",
|
|
131
|
+
"isNull",
|
|
132
|
+
"isNotNull",
|
|
133
|
+
];
|
|
134
|
+
}
|
|
135
|
+
if (Array.isArray(value)) {
|
|
136
|
+
return ["in", "notIn", "isNull", "isNotNull"];
|
|
137
|
+
}
|
|
138
|
+
return [...FILTER_OPERATORS];
|
|
139
|
+
}
|
|
140
|
+
export function isOperator(value) {
|
|
141
|
+
return FILTER_OPERATORS.includes(value);
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=criteria-operator-validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"criteria-operator-validation.js","sourceRoot":"","sources":["../../src/utils/criteria-operator-validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"AAAA,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAKlD"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export function parseQueryValue(value) {
|
|
2
|
+
if (!isNaN(Number(value)))
|
|
3
|
+
return Number(value); // number
|
|
4
|
+
if (value === "true" || value === "false")
|
|
5
|
+
return value === "true"; // boolean
|
|
6
|
+
if (!isNaN(Date.parse(value)))
|
|
7
|
+
return new Date(value); // Date
|
|
8
|
+
return value; // string
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;IAC1D,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,KAAK,KAAK,MAAM,CAAC,CAAC,UAAU;IAC9E,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO;IAC9D,OAAO,KAAK,CAAC,CAAC,SAAS;AACzB,CAAC"}
|