@decaf-ts/core 0.5.0 → 0.5.2
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/LICENSE.md +21 -157
- package/README.md +652 -15
- package/dist/core.cjs +2638 -1085
- package/dist/core.esm.cjs +2636 -1070
- package/lib/esm/identity/decorators.d.ts +52 -14
- package/lib/esm/identity/decorators.js +54 -16
- package/lib/esm/identity/utils.d.ts +20 -1
- package/lib/esm/identity/utils.js +22 -2
- package/lib/esm/index.d.ts +11 -15
- package/lib/esm/index.js +17 -19
- package/lib/esm/interfaces/ErrorParser.d.ts +12 -0
- package/lib/esm/interfaces/ErrorParser.js +1 -1
- package/lib/esm/interfaces/Executor.d.ts +10 -13
- package/lib/esm/interfaces/Executor.js +1 -1
- package/lib/esm/interfaces/Observable.d.ts +20 -18
- package/lib/esm/interfaces/Observable.js +1 -1
- package/lib/esm/interfaces/Observer.d.ts +7 -8
- package/lib/esm/interfaces/Observer.js +1 -1
- package/lib/esm/interfaces/Paginatable.d.ts +18 -2
- package/lib/esm/interfaces/Paginatable.js +1 -1
- package/lib/esm/interfaces/Queriable.d.ts +44 -3
- package/lib/esm/interfaces/Queriable.js +1 -1
- package/lib/esm/interfaces/RawExecutor.d.ts +10 -13
- package/lib/esm/interfaces/RawExecutor.js +1 -1
- package/lib/esm/interfaces/SequenceOptions.d.ts +50 -5
- package/lib/esm/interfaces/SequenceOptions.js +19 -1
- package/lib/esm/interfaces/index.d.ts +0 -1
- package/lib/esm/interfaces/index.js +1 -2
- package/lib/esm/model/BaseModel.d.ts +31 -0
- package/lib/esm/model/BaseModel.js +24 -1
- package/lib/esm/model/construction.d.ts +442 -9
- package/lib/esm/model/construction.js +441 -2
- package/lib/esm/model/decorators.d.ts +166 -42
- package/lib/esm/model/decorators.js +161 -37
- package/lib/esm/model/index.js +1 -2
- package/lib/esm/model/types.d.ts +9 -0
- package/lib/esm/model/types.js +1 -1
- package/lib/esm/persistence/Adapter.d.ts +384 -40
- package/lib/esm/persistence/Adapter.js +415 -59
- package/lib/esm/persistence/Dispatch.d.ts +131 -0
- package/lib/esm/persistence/Dispatch.js +187 -0
- package/lib/esm/persistence/ObserverHandler.d.ts +109 -0
- package/lib/esm/persistence/ObserverHandler.js +137 -0
- package/lib/esm/persistence/Sequence.d.ts +89 -8
- package/lib/esm/persistence/Sequence.js +91 -1
- package/lib/esm/persistence/constants.d.ts +22 -5
- package/lib/esm/persistence/constants.js +23 -7
- package/lib/esm/persistence/decorators.d.ts +10 -0
- package/lib/esm/persistence/decorators.js +11 -1
- package/lib/esm/persistence/errors.d.ts +23 -3
- package/lib/esm/persistence/errors.js +25 -7
- package/lib/esm/persistence/index.d.ts +3 -0
- package/lib/esm/persistence/index.js +4 -1
- package/lib/esm/persistence/types.d.ts +21 -0
- package/lib/esm/persistence/types.js +2 -0
- package/lib/esm/query/Condition.d.ts +88 -44
- package/lib/esm/query/Condition.js +144 -62
- package/lib/esm/query/Paginator.d.ts +67 -10
- package/lib/esm/query/Paginator.js +64 -10
- package/lib/esm/query/Statement.d.ts +82 -47
- package/lib/esm/query/Statement.js +175 -122
- package/lib/esm/query/constants.d.ts +25 -64
- package/lib/esm/query/constants.js +26 -68
- package/lib/esm/query/errors.d.ts +14 -0
- package/lib/esm/query/errors.js +15 -1
- package/lib/esm/query/index.d.ts +0 -5
- package/lib/esm/query/index.js +1 -6
- package/lib/esm/query/options.d.ts +69 -178
- package/lib/esm/query/options.js +1 -1
- package/lib/esm/query/selectors.d.ts +20 -24
- package/lib/esm/query/selectors.js +1 -1
- package/lib/esm/ram/RamAdapter.d.ts +322 -20
- package/lib/esm/ram/RamAdapter.js +360 -140
- package/lib/esm/ram/RamContext.d.ts +16 -1
- package/lib/esm/ram/RamContext.js +18 -3
- package/lib/esm/ram/RamPaginator.d.ts +51 -6
- package/lib/esm/ram/RamPaginator.js +58 -6
- package/lib/esm/ram/RamSequence.d.ts +49 -24
- package/lib/esm/ram/RamSequence.js +52 -40
- package/lib/esm/ram/RamStatement.d.ts +84 -6
- package/lib/esm/ram/RamStatement.js +175 -6
- package/lib/esm/ram/constants.d.ts +9 -0
- package/lib/esm/ram/constants.js +10 -0
- package/lib/esm/ram/handlers.d.ts +25 -0
- package/lib/esm/ram/handlers.js +27 -0
- package/lib/esm/ram/index.d.ts +4 -4
- package/lib/esm/ram/index.js +9 -5
- package/lib/esm/ram/model/RamSequence.d.ts +21 -9
- package/lib/esm/ram/model/RamSequence.js +19 -1
- package/lib/esm/ram/types.d.ts +47 -5
- package/lib/esm/ram/types.js +1 -1
- package/lib/esm/repository/Repository.d.ts +381 -22
- package/lib/esm/repository/Repository.js +446 -43
- package/lib/esm/repository/constants.d.ts +23 -13
- package/lib/esm/repository/constants.js +24 -14
- package/lib/esm/repository/decorators.d.ts +27 -0
- package/lib/esm/repository/decorators.js +28 -1
- package/lib/esm/repository/errors.d.ts +12 -11
- package/lib/esm/repository/errors.js +13 -16
- package/lib/esm/repository/injectables.d.ts +18 -0
- package/lib/esm/repository/injectables.js +19 -1
- package/lib/esm/repository/types.d.ts +13 -1
- package/lib/esm/repository/types.js +1 -1
- package/lib/esm/repository/utils.d.ts +11 -0
- package/lib/esm/repository/utils.js +12 -1
- package/lib/esm/utils/decorators.d.ts +9 -0
- package/lib/esm/utils/decorators.js +19 -0
- package/lib/esm/utils/errors.d.ts +56 -0
- package/lib/esm/utils/errors.js +63 -0
- package/lib/esm/utils/index.d.ts +2 -0
- package/lib/esm/utils/index.js +3 -0
- package/lib/identity/decorators.cjs +54 -16
- package/lib/identity/decorators.d.ts +52 -14
- package/lib/identity/utils.cjs +22 -2
- package/lib/identity/utils.d.ts +20 -1
- package/lib/index.cjs +17 -19
- package/lib/index.d.ts +11 -15
- package/lib/interfaces/ErrorParser.cjs +1 -1
- package/lib/interfaces/ErrorParser.d.ts +12 -0
- package/lib/interfaces/Executor.cjs +1 -1
- package/lib/interfaces/Executor.d.ts +10 -13
- package/lib/interfaces/Observable.cjs +1 -1
- package/lib/interfaces/Observable.d.ts +20 -18
- package/lib/interfaces/Observer.cjs +1 -1
- package/lib/interfaces/Observer.d.ts +7 -8
- package/lib/interfaces/Paginatable.cjs +1 -1
- package/lib/interfaces/Paginatable.d.ts +18 -2
- package/lib/interfaces/Queriable.cjs +1 -1
- package/lib/interfaces/Queriable.d.ts +44 -3
- package/lib/interfaces/RawExecutor.cjs +1 -1
- package/lib/interfaces/RawExecutor.d.ts +10 -13
- package/lib/interfaces/SequenceOptions.cjs +19 -1
- package/lib/interfaces/SequenceOptions.d.ts +50 -5
- package/lib/interfaces/index.cjs +1 -2
- package/lib/interfaces/index.d.ts +0 -1
- package/lib/model/BaseModel.cjs +24 -1
- package/lib/model/BaseModel.d.ts +31 -0
- package/lib/model/construction.cjs +441 -2
- package/lib/model/construction.d.ts +442 -9
- package/lib/model/decorators.cjs +161 -37
- package/lib/model/decorators.d.ts +166 -42
- package/lib/model/index.cjs +1 -2
- package/lib/model/types.cjs +1 -1
- package/lib/model/types.d.ts +9 -0
- package/lib/persistence/Adapter.cjs +414 -58
- package/lib/persistence/Adapter.d.ts +384 -40
- package/lib/persistence/Dispatch.cjs +191 -0
- package/lib/persistence/Dispatch.d.ts +131 -0
- package/lib/persistence/ObserverHandler.cjs +141 -0
- package/lib/persistence/ObserverHandler.d.ts +109 -0
- package/lib/persistence/Sequence.cjs +91 -1
- package/lib/persistence/Sequence.d.ts +89 -8
- package/lib/persistence/constants.cjs +24 -8
- package/lib/persistence/constants.d.ts +22 -5
- package/lib/persistence/decorators.cjs +11 -1
- package/lib/persistence/decorators.d.ts +10 -0
- package/lib/persistence/errors.cjs +26 -9
- package/lib/persistence/errors.d.ts +23 -3
- package/lib/persistence/index.cjs +4 -1
- package/lib/persistence/index.d.ts +3 -0
- package/lib/persistence/types.cjs +3 -0
- package/lib/persistence/types.d.ts +21 -0
- package/lib/query/Condition.cjs +143 -61
- package/lib/query/Condition.d.ts +88 -44
- package/lib/query/Paginator.cjs +64 -10
- package/lib/query/Paginator.d.ts +67 -10
- package/lib/query/Statement.cjs +174 -121
- package/lib/query/Statement.d.ts +82 -47
- package/lib/query/constants.cjs +27 -69
- package/lib/query/constants.d.ts +25 -64
- package/lib/query/errors.cjs +15 -1
- package/lib/query/errors.d.ts +14 -0
- package/lib/query/index.cjs +1 -6
- package/lib/query/index.d.ts +0 -5
- package/lib/query/options.cjs +1 -1
- package/lib/query/options.d.ts +69 -178
- package/lib/query/selectors.cjs +1 -1
- package/lib/query/selectors.d.ts +20 -24
- package/lib/ram/RamAdapter.cjs +358 -172
- package/lib/ram/RamAdapter.d.ts +322 -20
- package/lib/ram/RamContext.cjs +18 -3
- package/lib/ram/RamContext.d.ts +16 -1
- package/lib/ram/RamPaginator.cjs +58 -6
- package/lib/ram/RamPaginator.d.ts +51 -6
- package/lib/ram/RamSequence.cjs +52 -41
- package/lib/ram/RamSequence.d.ts +49 -24
- package/lib/ram/RamStatement.cjs +175 -6
- package/lib/ram/RamStatement.d.ts +84 -6
- package/lib/ram/constants.cjs +13 -0
- package/lib/ram/constants.d.ts +9 -0
- package/lib/ram/handlers.cjs +30 -0
- package/lib/ram/handlers.d.ts +25 -0
- package/lib/ram/index.cjs +9 -5
- package/lib/ram/index.d.ts +4 -4
- package/lib/ram/model/RamSequence.cjs +19 -1
- package/lib/ram/model/RamSequence.d.ts +21 -9
- package/lib/ram/types.cjs +1 -1
- package/lib/ram/types.d.ts +47 -5
- package/lib/repository/Repository.cjs +445 -42
- package/lib/repository/Repository.d.ts +381 -22
- package/lib/repository/constants.cjs +24 -14
- package/lib/repository/constants.d.ts +23 -13
- package/lib/repository/decorators.cjs +28 -1
- package/lib/repository/decorators.d.ts +27 -0
- package/lib/repository/errors.cjs +14 -19
- package/lib/repository/errors.d.ts +12 -11
- package/lib/repository/injectables.cjs +19 -1
- package/lib/repository/injectables.d.ts +18 -0
- package/lib/repository/types.cjs +1 -1
- package/lib/repository/types.d.ts +13 -1
- package/lib/repository/utils.cjs +12 -1
- package/lib/repository/utils.d.ts +11 -0
- package/lib/utils/decorators.cjs +22 -0
- package/lib/utils/decorators.d.ts +9 -0
- package/lib/utils/errors.cjs +69 -0
- package/lib/utils/errors.d.ts +56 -0
- package/lib/{validators → utils}/index.cjs +2 -2
- package/lib/utils/index.d.ts +2 -0
- package/package.json +5 -5
- package/lib/esm/interfaces/Builder.d.ts +0 -16
- package/lib/esm/interfaces/Builder.js +0 -2
- package/lib/esm/model/IdentifiedBaseModel.d.ts +0 -7
- package/lib/esm/model/IdentifiedBaseModel.js +0 -25
- package/lib/esm/query/Clause.d.ts +0 -50
- package/lib/esm/query/Clause.js +0 -82
- package/lib/esm/query/ClauseFactory.d.ts +0 -71
- package/lib/esm/query/ClauseFactory.js +0 -6
- package/lib/esm/query/Query.d.ts +0 -43
- package/lib/esm/query/Query.js +0 -54
- package/lib/esm/query/clauses/FromClause.d.ts +0 -45
- package/lib/esm/query/clauses/FromClause.js +0 -59
- package/lib/esm/query/clauses/GroupByClause.d.ts +0 -21
- package/lib/esm/query/clauses/GroupByClause.js +0 -19
- package/lib/esm/query/clauses/InsertClause.d.ts +0 -37
- package/lib/esm/query/clauses/InsertClause.js +0 -55
- package/lib/esm/query/clauses/LimitClause.d.ts +0 -29
- package/lib/esm/query/clauses/LimitClause.js +0 -27
- package/lib/esm/query/clauses/OffsetClause.d.ts +0 -21
- package/lib/esm/query/clauses/OffsetClause.js +0 -19
- package/lib/esm/query/clauses/OrderByClause.d.ts +0 -37
- package/lib/esm/query/clauses/OrderByClause.js +0 -39
- package/lib/esm/query/clauses/SelectClause.d.ts +0 -47
- package/lib/esm/query/clauses/SelectClause.js +0 -62
- package/lib/esm/query/clauses/SelectorBasedClause.d.ts +0 -25
- package/lib/esm/query/clauses/SelectorBasedClause.js +0 -44
- package/lib/esm/query/clauses/ValuesClause.d.ts +0 -21
- package/lib/esm/query/clauses/ValuesClause.js +0 -36
- package/lib/esm/query/clauses/WhereClause.d.ts +0 -46
- package/lib/esm/query/clauses/WhereClause.js +0 -71
- package/lib/esm/query/clauses/index.d.ts +0 -10
- package/lib/esm/query/clauses/index.js +0 -11
- package/lib/esm/query/types.d.ts +0 -2
- package/lib/esm/query/types.js +0 -2
- package/lib/esm/ram/RamClauseFactory.d.ts +0 -17
- package/lib/esm/ram/RamClauseFactory.js +0 -92
- package/lib/esm/ram/clauses/FromClause.d.ts +0 -7
- package/lib/esm/ram/clauses/FromClause.js +0 -11
- package/lib/esm/ram/clauses/InsertClause.d.ts +0 -7
- package/lib/esm/ram/clauses/InsertClause.js +0 -13
- package/lib/esm/ram/clauses/OrderByClause.d.ts +0 -7
- package/lib/esm/ram/clauses/OrderByClause.js +0 -39
- package/lib/esm/ram/clauses/SelectClause.d.ts +0 -7
- package/lib/esm/ram/clauses/SelectClause.js +0 -16
- package/lib/esm/ram/clauses/ValuesClause.d.ts +0 -7
- package/lib/esm/ram/clauses/ValuesClause.js +0 -12
- package/lib/esm/ram/clauses/WhereClause.d.ts +0 -7
- package/lib/esm/ram/clauses/WhereClause.js +0 -11
- package/lib/esm/ram/clauses/index.d.ts +0 -6
- package/lib/esm/ram/clauses/index.js +0 -7
- package/lib/esm/validators/ClauseSequenceValidator.d.ts +0 -28
- package/lib/esm/validators/ClauseSequenceValidator.js +0 -95
- package/lib/esm/validators/decorators.d.ts +0 -10
- package/lib/esm/validators/decorators.js +0 -24
- package/lib/esm/validators/index.d.ts +0 -2
- package/lib/esm/validators/index.js +0 -3
- package/lib/interfaces/Builder.cjs +0 -3
- package/lib/interfaces/Builder.d.ts +0 -16
- package/lib/model/IdentifiedBaseModel.cjs +0 -29
- package/lib/model/IdentifiedBaseModel.d.ts +0 -7
- package/lib/query/Clause.cjs +0 -86
- package/lib/query/Clause.d.ts +0 -50
- package/lib/query/ClauseFactory.cjs +0 -10
- package/lib/query/ClauseFactory.d.ts +0 -71
- package/lib/query/Query.cjs +0 -58
- package/lib/query/Query.d.ts +0 -43
- package/lib/query/clauses/FromClause.cjs +0 -63
- package/lib/query/clauses/FromClause.d.ts +0 -45
- package/lib/query/clauses/GroupByClause.cjs +0 -23
- package/lib/query/clauses/GroupByClause.d.ts +0 -21
- package/lib/query/clauses/InsertClause.cjs +0 -59
- package/lib/query/clauses/InsertClause.d.ts +0 -37
- package/lib/query/clauses/LimitClause.cjs +0 -31
- package/lib/query/clauses/LimitClause.d.ts +0 -29
- package/lib/query/clauses/OffsetClause.cjs +0 -23
- package/lib/query/clauses/OffsetClause.d.ts +0 -21
- package/lib/query/clauses/OrderByClause.cjs +0 -43
- package/lib/query/clauses/OrderByClause.d.ts +0 -37
- package/lib/query/clauses/SelectClause.cjs +0 -66
- package/lib/query/clauses/SelectClause.d.ts +0 -47
- package/lib/query/clauses/SelectorBasedClause.cjs +0 -48
- package/lib/query/clauses/SelectorBasedClause.d.ts +0 -25
- package/lib/query/clauses/ValuesClause.cjs +0 -40
- package/lib/query/clauses/ValuesClause.d.ts +0 -21
- package/lib/query/clauses/WhereClause.cjs +0 -75
- package/lib/query/clauses/WhereClause.d.ts +0 -46
- package/lib/query/clauses/index.cjs +0 -27
- package/lib/query/clauses/index.d.ts +0 -10
- package/lib/query/types.cjs +0 -3
- package/lib/query/types.d.ts +0 -2
- package/lib/ram/RamClauseFactory.cjs +0 -96
- package/lib/ram/RamClauseFactory.d.ts +0 -17
- package/lib/ram/clauses/FromClause.cjs +0 -15
- package/lib/ram/clauses/FromClause.d.ts +0 -7
- package/lib/ram/clauses/InsertClause.cjs +0 -17
- package/lib/ram/clauses/InsertClause.d.ts +0 -7
- package/lib/ram/clauses/OrderByClause.cjs +0 -43
- package/lib/ram/clauses/OrderByClause.d.ts +0 -7
- package/lib/ram/clauses/SelectClause.cjs +0 -20
- package/lib/ram/clauses/SelectClause.d.ts +0 -7
- package/lib/ram/clauses/ValuesClause.cjs +0 -16
- package/lib/ram/clauses/ValuesClause.d.ts +0 -7
- package/lib/ram/clauses/WhereClause.cjs +0 -15
- package/lib/ram/clauses/WhereClause.d.ts +0 -7
- package/lib/ram/clauses/index.cjs +0 -23
- package/lib/ram/clauses/index.d.ts +0 -6
- package/lib/validators/ClauseSequenceValidator.cjs +0 -98
- package/lib/validators/ClauseSequenceValidator.d.ts +0 -28
- package/lib/validators/decorators.cjs +0 -27
- package/lib/validators/decorators.d.ts +0 -10
- package/lib/validators/index.d.ts +0 -2
@@ -10,22 +10,40 @@ const decorators_1 = require("./../model/decorators.cjs");
|
|
10
10
|
const utils_1 = require("./utils.cjs");
|
11
11
|
const repository_1 = require("./../repository/index.cjs");
|
12
12
|
/**
|
13
|
-
* @
|
14
|
-
* @
|
15
|
-
*
|
13
|
+
* @description Callback function for primary key creation
|
14
|
+
* @summary Handles the creation of primary key values for models using sequences
|
15
|
+
* @template M - Type that extends Model
|
16
|
+
* @template R - Type that extends Repo<M, F, C>
|
17
|
+
* @template V - Type that extends SequenceOptions
|
18
|
+
* @template F - Type that extends RepositoryFlags
|
19
|
+
* @template C - Type that extends Context<F>
|
20
|
+
* @param {Context<F>} context - The execution context
|
21
|
+
* @param {V} data - The sequence options
|
22
|
+
* @param key - The property key to set as primary key
|
23
|
+
* @param {M} model - The model instance
|
24
|
+
* @return {Promise<void>} A promise that resolves when the primary key is set
|
25
|
+
* @function pkOnCreate
|
26
|
+
* @category Property Decorators
|
27
|
+
* @mermaid
|
28
|
+
* sequenceDiagram
|
29
|
+
* participant Model
|
30
|
+
* participant pkOnCreate
|
31
|
+
* participant Adapter
|
32
|
+
* participant Sequence
|
16
33
|
*
|
17
|
-
*
|
18
|
-
*
|
19
|
-
*
|
20
|
-
*
|
21
|
-
*
|
22
|
-
*
|
23
|
-
*
|
24
|
-
*
|
25
|
-
*
|
26
|
-
*
|
27
|
-
*
|
28
|
-
*
|
34
|
+
* Model->>pkOnCreate: Call with model instance
|
35
|
+
* Note over pkOnCreate: Check if key already exists
|
36
|
+
* alt Key exists or no type specified
|
37
|
+
* pkOnCreate-->>Model: Return early
|
38
|
+
* else Key needs to be created
|
39
|
+
* pkOnCreate->>pkOnCreate: Generate sequence name if not provided
|
40
|
+
* pkOnCreate->>Adapter: Request Sequence(data)
|
41
|
+
* Adapter->>Sequence: Create sequence
|
42
|
+
* Sequence-->>pkOnCreate: Return sequence
|
43
|
+
* pkOnCreate->>Sequence: Call next()
|
44
|
+
* Sequence-->>pkOnCreate: Return next value
|
45
|
+
* pkOnCreate->>Model: Set primary key value
|
46
|
+
* end
|
29
47
|
*/
|
30
48
|
async function pkOnCreate(context, data, key, model) {
|
31
49
|
if (!data.type || model[key]) {
|
@@ -51,6 +69,26 @@ async function pkOnCreate(context, data, key, model) {
|
|
51
69
|
const next = await sequence.next();
|
52
70
|
setPrimaryKeyValue(model, key, next);
|
53
71
|
}
|
72
|
+
/**
|
73
|
+
* @description Primary Key Decorator
|
74
|
+
* @summary Marks a property as the model's primary key with automatic sequence generation
|
75
|
+
* This decorator combines multiple behaviors: it marks the property as unique, required,
|
76
|
+
* and ensures the index is created properly according to the provided sequence options.
|
77
|
+
* @param {Omit<SequenceOptions, "cycle" | "startWith" | "incrementBy">} opts - Options for the sequence generation
|
78
|
+
* @return {PropertyDecorator} A property decorator that can be applied to model properties
|
79
|
+
* @function pk
|
80
|
+
* @category Property Decorators
|
81
|
+
* @example
|
82
|
+
* ```typescript
|
83
|
+
* class User extends BaseModel {
|
84
|
+
* @pk()
|
85
|
+
* id!: string;
|
86
|
+
*
|
87
|
+
* @required()
|
88
|
+
* username!: string;
|
89
|
+
* }
|
90
|
+
* ```
|
91
|
+
*/
|
54
92
|
function pk(opts = SequenceOptions_1.DefaultSequenceOptions) {
|
55
93
|
opts = Object.assign({}, SequenceOptions_1.DefaultSequenceOptions, opts);
|
56
94
|
const key = Repository_1.Repository.key(db_decorators_1.DBKeys.ID);
|
@@ -60,4 +98,4 @@ function pk(opts = SequenceOptions_1.DefaultSequenceOptions) {
|
|
60
98
|
(0, decorator_validation_1.propMetadata)(key, opts), (0, db_decorators_1.onCreate)(pkOnCreate, opts))
|
61
99
|
.apply();
|
62
100
|
}
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pZGVudGl0eS9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBNERBLGdDQXlDQztBQXNCRCxnQkFrQkM7QUE3SUQseUVBS3dDO0FBQ3hDLHlFQUd1QztBQUN2QywyREFNaUM7QUFDakMsK0RBQTREO0FBQzVELDBEQUE0QztBQUM1Qyx1Q0FBK0M7QUFHL0MsMERBQStDO0FBRS9DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1DRztBQUNJLEtBQUssVUFBVSxVQUFVLENBUTlCLE9BQW1CLEVBQ25CLElBQU8sRUFDUCxHQUFZLEVBQ1osS0FBUTtJQUVSLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzdCLE9BQU87SUFDVCxDQUFDO0lBRUQsTUFBTSxrQkFBa0IsR0FBRyxVQUN6QixNQUFTLEVBQ1QsV0FBbUIsRUFDbkIsS0FBK0I7UUFFL0IsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFO1lBQ3pDLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFFBQVEsRUFBRSxLQUFLO1lBQ2YsWUFBWSxFQUFFLElBQUk7WUFDbEIsS0FBSyxFQUFFLEtBQUs7U0FDYixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUM7SUFDRixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7UUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUEsNEJBQW9CLEVBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlELElBQUksUUFBa0IsQ0FBQztJQUN2QixJQUFJLENBQUM7UUFDSCxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztRQUNoQixNQUFNLElBQUksNkJBQWEsQ0FDckIsa0NBQWtDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQ3BELENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbkMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLEdBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFDSCxTQUFnQixFQUFFLENBQ2hCLE9BR0ksd0NBQXNCO0lBRTFCLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSx3Q0FBc0IsRUFBRSxJQUFJLENBQW9CLENBQUM7SUFDMUUsTUFBTSxHQUFHLEdBQUcsdUJBQVUsQ0FBQyxHQUFHLENBQUMsc0JBQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0QyxPQUFPLGlDQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztTQUN2QixNQUFNLENBQ0wsSUFBQSxrQkFBSyxFQUFDLENBQUMsMkJBQWMsQ0FBQyxHQUFHLEVBQUUsMkJBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUMvQyxJQUFBLCtCQUFRLEdBQUUsRUFDVixJQUFBLHdCQUFRLEdBQUU7SUFDVixpREFBaUQ7SUFDakQsSUFBQSxtQ0FBWSxFQUFDLEdBQUcsRUFBRSxJQUF1QixDQUFDLEVBQzFDLElBQUEsd0JBQVEsRUFBQyxVQUFVLEVBQUUsSUFBdUIsQ0FBQyxDQUM5QztTQUNBLEtBQUssRUFBRSxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERlY29yYXRpb24sXG4gIE1vZGVsLFxuICBwcm9wTWV0YWRhdGEsXG4gIHJlcXVpcmVkLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQge1xuICBEZWZhdWx0U2VxdWVuY2VPcHRpb25zLFxuICBTZXF1ZW5jZU9wdGlvbnMsXG59IGZyb20gXCIuLi9pbnRlcmZhY2VzL1NlcXVlbmNlT3B0aW9uc1wiO1xuaW1wb3J0IHtcbiAgREJLZXlzLFxuICBJbnRlcm5hbEVycm9yLFxuICBvbkNyZWF0ZSxcbiAgcmVhZG9ubHksXG4gIFJlcG9zaXRvcnlGbGFncyxcbn0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBSZXBvLCBSZXBvc2l0b3J5IH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvUmVwb3NpdG9yeVwiO1xuaW1wb3J0IHsgaW5kZXggfSBmcm9tIFwiLi4vbW9kZWwvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgc2VxdWVuY2VOYW1lRm9yTW9kZWwgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgU2VxdWVuY2UgfSBmcm9tIFwiLi4vcGVyc2lzdGVuY2UvU2VxdWVuY2VcIjtcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IE9yZGVyRGlyZWN0aW9uIH0gZnJvbSBcIi4uL3JlcG9zaXRvcnlcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ2FsbGJhY2sgZnVuY3Rpb24gZm9yIHByaW1hcnkga2V5IGNyZWF0aW9uXG4gKiBAc3VtbWFyeSBIYW5kbGVzIHRoZSBjcmVhdGlvbiBvZiBwcmltYXJ5IGtleSB2YWx1ZXMgZm9yIG1vZGVscyB1c2luZyBzZXF1ZW5jZXNcbiAqIEB0ZW1wbGF0ZSBNIC0gVHlwZSB0aGF0IGV4dGVuZHMgTW9kZWxcbiAqIEB0ZW1wbGF0ZSBSIC0gVHlwZSB0aGF0IGV4dGVuZHMgUmVwbzxNLCBGLCBDPlxuICogQHRlbXBsYXRlIFYgLSBUeXBlIHRoYXQgZXh0ZW5kcyBTZXF1ZW5jZU9wdGlvbnNcbiAqIEB0ZW1wbGF0ZSBGIC0gVHlwZSB0aGF0IGV4dGVuZHMgUmVwb3NpdG9yeUZsYWdzXG4gKiBAdGVtcGxhdGUgQyAtIFR5cGUgdGhhdCBleHRlbmRzIENvbnRleHQ8Rj5cbiAqIEBwYXJhbSB7Q29udGV4dDxGPn0gY29udGV4dCAtIFRoZSBleGVjdXRpb24gY29udGV4dFxuICogQHBhcmFtIHtWfSBkYXRhIC0gVGhlIHNlcXVlbmNlIG9wdGlvbnNcbiAqIEBwYXJhbSBrZXkgLSBUaGUgcHJvcGVydHkga2V5IHRvIHNldCBhcyBwcmltYXJ5IGtleVxuICogQHBhcmFtIHtNfSBtb2RlbCAtIFRoZSBtb2RlbCBpbnN0YW5jZVxuICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgcHJpbWFyeSBrZXkgaXMgc2V0XG4gKiBAZnVuY3Rpb24gcGtPbkNyZWF0ZVxuICogQGNhdGVnb3J5IFByb3BlcnR5IERlY29yYXRvcnNcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgTW9kZWxcbiAqICAgcGFydGljaXBhbnQgcGtPbkNyZWF0ZVxuICogICBwYXJ0aWNpcGFudCBBZGFwdGVyXG4gKiAgIHBhcnRpY2lwYW50IFNlcXVlbmNlXG4gKlxuICogICBNb2RlbC0+PnBrT25DcmVhdGU6IENhbGwgd2l0aCBtb2RlbCBpbnN0YW5jZVxuICogICBOb3RlIG92ZXIgcGtPbkNyZWF0ZTogQ2hlY2sgaWYga2V5IGFscmVhZHkgZXhpc3RzXG4gKiAgIGFsdCBLZXkgZXhpc3RzIG9yIG5vIHR5cGUgc3BlY2lmaWVkXG4gKiAgICAgcGtPbkNyZWF0ZS0tPj5Nb2RlbDogUmV0dXJuIGVhcmx5XG4gKiAgIGVsc2UgS2V5IG5lZWRzIHRvIGJlIGNyZWF0ZWRcbiAqICAgICBwa09uQ3JlYXRlLT4+cGtPbkNyZWF0ZTogR2VuZXJhdGUgc2VxdWVuY2UgbmFtZSBpZiBub3QgcHJvdmlkZWRcbiAqICAgICBwa09uQ3JlYXRlLT4+QWRhcHRlcjogUmVxdWVzdCBTZXF1ZW5jZShkYXRhKVxuICogICAgIEFkYXB0ZXItPj5TZXF1ZW5jZTogQ3JlYXRlIHNlcXVlbmNlXG4gKiAgICAgU2VxdWVuY2UtLT4+cGtPbkNyZWF0ZTogUmV0dXJuIHNlcXVlbmNlXG4gKiAgICAgcGtPbkNyZWF0ZS0+PlNlcXVlbmNlOiBDYWxsIG5leHQoKVxuICogICAgIFNlcXVlbmNlLS0+PnBrT25DcmVhdGU6IFJldHVybiBuZXh0IHZhbHVlXG4gKiAgICAgcGtPbkNyZWF0ZS0+Pk1vZGVsOiBTZXQgcHJpbWFyeSBrZXkgdmFsdWVcbiAqICAgZW5kXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwa09uQ3JlYXRlPFxuICBNIGV4dGVuZHMgTW9kZWwsXG4gIFIgZXh0ZW5kcyBSZXBvPE0sIEYsIEM+LFxuICBWIGV4dGVuZHMgU2VxdWVuY2VPcHRpb25zLFxuICBGIGV4dGVuZHMgUmVwb3NpdG9yeUZsYWdzLFxuICBDIGV4dGVuZHMgQ29udGV4dDxGPixcbj4oXG4gIHRoaXM6IFIsXG4gIGNvbnRleHQ6IENvbnRleHQ8Rj4sXG4gIGRhdGE6IFYsXG4gIGtleToga2V5b2YgTSxcbiAgbW9kZWw6IE1cbik6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoIWRhdGEudHlwZSB8fCBtb2RlbFtrZXldKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgc2V0UHJpbWFyeUtleVZhbHVlID0gZnVuY3Rpb24gPE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgdGFyZ2V0OiBNLFxuICAgIHByb3BlcnR5S2V5OiBzdHJpbmcsXG4gICAgdmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludFxuICApIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcm9wZXJ0eUtleSwge1xuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICB9KTtcbiAgfTtcbiAgaWYgKCFkYXRhLm5hbWUpIGRhdGEubmFtZSA9IHNlcXVlbmNlTmFtZUZvck1vZGVsKG1vZGVsLCBcInBrXCIpO1xuICBsZXQgc2VxdWVuY2U6IFNlcXVlbmNlO1xuICB0cnkge1xuICAgIHNlcXVlbmNlID0gYXdhaXQgdGhpcy5hZGFwdGVyLlNlcXVlbmNlKGRhdGEpO1xuICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgIGBGYWlsZWQgdG8gaW5zdGFudGlhdGUgU2VxdWVuY2UgJHtkYXRhLm5hbWV9OiAke2V9YFxuICAgICk7XG4gIH1cblxuICBjb25zdCBuZXh0ID0gYXdhaXQgc2VxdWVuY2UubmV4dCgpO1xuICBzZXRQcmltYXJ5S2V5VmFsdWUobW9kZWwsIGtleSBhcyBzdHJpbmcsIG5leHQpO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBQcmltYXJ5IEtleSBEZWNvcmF0b3JcbiAqIEBzdW1tYXJ5IE1hcmtzIGEgcHJvcGVydHkgYXMgdGhlIG1vZGVsJ3MgcHJpbWFyeSBrZXkgd2l0aCBhdXRvbWF0aWMgc2VxdWVuY2UgZ2VuZXJhdGlvblxuICogVGhpcyBkZWNvcmF0b3IgY29tYmluZXMgbXVsdGlwbGUgYmVoYXZpb3JzOiBpdCBtYXJrcyB0aGUgcHJvcGVydHkgYXMgdW5pcXVlLCByZXF1aXJlZCxcbiAqIGFuZCBlbnN1cmVzIHRoZSBpbmRleCBpcyBjcmVhdGVkIHByb3Blcmx5IGFjY29yZGluZyB0byB0aGUgcHJvdmlkZWQgc2VxdWVuY2Ugb3B0aW9ucy5cbiAqIEBwYXJhbSB7T21pdDxTZXF1ZW5jZU9wdGlvbnMsIFwiY3ljbGVcIiB8IFwic3RhcnRXaXRoXCIgfCBcImluY3JlbWVudEJ5XCI+fSBvcHRzIC0gT3B0aW9ucyBmb3IgdGhlIHNlcXVlbmNlIGdlbmVyYXRpb25cbiAqIEByZXR1cm4ge1Byb3BlcnR5RGVjb3JhdG9yfSBBIHByb3BlcnR5IGRlY29yYXRvciB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIG1vZGVsIHByb3BlcnRpZXNcbiAqIEBmdW5jdGlvbiBwa1xuICogQGNhdGVnb3J5IFByb3BlcnR5IERlY29yYXRvcnNcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjbGFzcyBVc2VyIGV4dGVuZHMgQmFzZU1vZGVsIHtcbiAqICAgQHBrKClcbiAqICAgaWQhOiBzdHJpbmc7XG4gKlxuICogICBAcmVxdWlyZWQoKVxuICogICB1c2VybmFtZSE6IHN0cmluZztcbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcGsoXG4gIG9wdHM6IE9taXQ8XG4gICAgU2VxdWVuY2VPcHRpb25zLFxuICAgIFwiY3ljbGVcIiB8IFwic3RhcnRXaXRoXCIgfCBcImluY3JlbWVudEJ5XCJcbiAgPiA9IERlZmF1bHRTZXF1ZW5jZU9wdGlvbnNcbikge1xuICBvcHRzID0gT2JqZWN0LmFzc2lnbih7fSwgRGVmYXVsdFNlcXVlbmNlT3B0aW9ucywgb3B0cykgYXMgU2VxdWVuY2VPcHRpb25zO1xuICBjb25zdCBrZXkgPSBSZXBvc2l0b3J5LmtleShEQktleXMuSUQpO1xuICByZXR1cm4gRGVjb3JhdGlvbi5mb3Ioa2V5KVxuICAgIC5kZWZpbmUoXG4gICAgICBpbmRleChbT3JkZXJEaXJlY3Rpb24uQVNDLCBPcmRlckRpcmVjdGlvbi5EU0NdKSxcbiAgICAgIHJlcXVpcmVkKCksXG4gICAgICByZWFkb25seSgpLFxuICAgICAgLy8gdHlwZShbU3RyaW5nLm5hbWUsIE51bWJlci5uYW1lLCBCaWdJbnQubmFtZV0pLFxuICAgICAgcHJvcE1ldGFkYXRhKGtleSwgb3B0cyBhcyBTZXF1ZW5jZU9wdGlvbnMpLFxuICAgICAgb25DcmVhdGUocGtPbkNyZWF0ZSwgb3B0cyBhcyBTZXF1ZW5jZU9wdGlvbnMpXG4gICAgKVxuICAgIC5hcHBseSgpO1xufVxuIl19
|
@@ -4,22 +4,60 @@ import { RepositoryFlags } from "@decaf-ts/db-decorators";
|
|
4
4
|
import { Repo } from "../repository/Repository";
|
5
5
|
import { Context } from "@decaf-ts/db-decorators";
|
6
6
|
/**
|
7
|
-
* @
|
8
|
-
* @
|
9
|
-
*
|
10
|
-
*
|
11
|
-
*
|
7
|
+
* @description Callback function for primary key creation
|
8
|
+
* @summary Handles the creation of primary key values for models using sequences
|
9
|
+
* @template M - Type that extends Model
|
10
|
+
* @template R - Type that extends Repo<M, F, C>
|
11
|
+
* @template V - Type that extends SequenceOptions
|
12
|
+
* @template F - Type that extends RepositoryFlags
|
13
|
+
* @template C - Type that extends Context<F>
|
14
|
+
* @param {Context<F>} context - The execution context
|
15
|
+
* @param {V} data - The sequence options
|
16
|
+
* @param key - The property key to set as primary key
|
17
|
+
* @param {M} model - The model instance
|
18
|
+
* @return {Promise<void>} A promise that resolves when the primary key is set
|
19
|
+
* @function pkOnCreate
|
20
|
+
* @category Property Decorators
|
21
|
+
* @mermaid
|
22
|
+
* sequenceDiagram
|
23
|
+
* participant Model
|
24
|
+
* participant pkOnCreate
|
25
|
+
* participant Adapter
|
26
|
+
* participant Sequence
|
12
27
|
*
|
28
|
+
* Model->>pkOnCreate: Call with model instance
|
29
|
+
* Note over pkOnCreate: Check if key already exists
|
30
|
+
* alt Key exists or no type specified
|
31
|
+
* pkOnCreate-->>Model: Return early
|
32
|
+
* else Key needs to be created
|
33
|
+
* pkOnCreate->>pkOnCreate: Generate sequence name if not provided
|
34
|
+
* pkOnCreate->>Adapter: Request Sequence(data)
|
35
|
+
* Adapter->>Sequence: Create sequence
|
36
|
+
* Sequence-->>pkOnCreate: Return sequence
|
37
|
+
* pkOnCreate->>Sequence: Call next()
|
38
|
+
* Sequence-->>pkOnCreate: Return next value
|
39
|
+
* pkOnCreate->>Model: Set primary key value
|
40
|
+
* end
|
41
|
+
*/
|
42
|
+
export declare function pkOnCreate<M extends Model, R extends Repo<M, F, C>, V extends SequenceOptions, F extends RepositoryFlags, C extends Context<F>>(this: R, context: Context<F>, data: V, key: keyof M, model: M): Promise<void>;
|
43
|
+
/**
|
44
|
+
* @description Primary Key Decorator
|
45
|
+
* @summary Marks a property as the model's primary key with automatic sequence generation
|
46
|
+
* This decorator combines multiple behaviors: it marks the property as unique, required,
|
47
|
+
* and ensures the index is created properly according to the provided sequence options.
|
48
|
+
* @param {Omit<SequenceOptions, "cycle" | "startWith" | "incrementBy">} opts - Options for the sequence generation
|
49
|
+
* @return {PropertyDecorator} A property decorator that can be applied to model properties
|
13
50
|
* @function pk
|
51
|
+
* @category Property Decorators
|
52
|
+
* @example
|
53
|
+
* ```typescript
|
54
|
+
* class User extends BaseModel {
|
55
|
+
* @pk()
|
56
|
+
* id!: string;
|
14
57
|
*
|
15
|
-
*
|
16
|
-
*
|
17
|
-
*
|
18
|
-
*
|
19
|
-
* @see on
|
20
|
-
* @param data
|
21
|
-
* @param key
|
22
|
-
* @param model
|
58
|
+
* @required()
|
59
|
+
* username!: string;
|
60
|
+
* }
|
61
|
+
* ```
|
23
62
|
*/
|
24
|
-
export declare function pkOnCreate<M extends Model, R extends Repo<M, C, F>, V extends SequenceOptions, F extends RepositoryFlags, C extends Context<F>>(this: R, context: Context<F>, data: V, key: keyof M, model: M): Promise<void>;
|
25
63
|
export declare function pk(opts?: Omit<SequenceOptions, "cycle" | "startWith" | "incrementBy">): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
package/lib/identity/utils.cjs
CHANGED
@@ -5,8 +5,18 @@ exports.sequenceNameForModel = sequenceNameForModel;
|
|
5
5
|
const decorator_validation_1 = require("@decaf-ts/decorator-validation");
|
6
6
|
const Adapter_1 = require("./../persistence/Adapter.cjs");
|
7
7
|
const constants_1 = require("./../persistence/constants.cjs");
|
8
|
+
/**
|
9
|
+
* @description Gets the table name for a model
|
10
|
+
* @summary Retrieves the table name associated with a model by checking metadata or falling back to the constructor name
|
11
|
+
* @template M - Type that extends Model
|
12
|
+
* @param {M | Constructor<M>} model - The model instance or constructor to get the table name for
|
13
|
+
* @return {string} The table name for the model
|
14
|
+
* @function getTableName
|
15
|
+
* @memberOf module:core
|
16
|
+
*/
|
8
17
|
function getTableName(model) {
|
9
|
-
const
|
18
|
+
const obj = model instanceof decorator_validation_1.Model ? model.constructor : model;
|
19
|
+
const metadata = Reflect.getOwnMetadata(Adapter_1.Adapter.key(constants_1.PersistenceKeys.TABLE), obj);
|
10
20
|
if (metadata) {
|
11
21
|
return metadata;
|
12
22
|
}
|
@@ -15,7 +25,17 @@ function getTableName(model) {
|
|
15
25
|
}
|
16
26
|
return model.name;
|
17
27
|
}
|
28
|
+
/**
|
29
|
+
* @description Generates a sequence name for a model
|
30
|
+
* @summary Creates a standardized sequence name by combining the table name with additional arguments
|
31
|
+
* @template M - Type that extends Model
|
32
|
+
* @param {M | Constructor<M>} model - The model instance or constructor to generate the sequence name for
|
33
|
+
* @param {...string} args - Additional string arguments to append to the sequence name
|
34
|
+
* @return {string} The generated sequence name
|
35
|
+
* @function sequenceNameForModel
|
36
|
+
* @memberOf module:core
|
37
|
+
*/
|
18
38
|
function sequenceNameForModel(model, ...args) {
|
19
39
|
return [getTableName(model), ...args].join("_");
|
20
40
|
}
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaWRlbnRpdHkvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFhQSxvQ0FnQkM7QUFZRCxvREFLQztBQTlDRCx5RUFBb0U7QUFDcEUsMERBQWlEO0FBQ2pELDhEQUEyRDtBQUUzRDs7Ozs7Ozs7R0FRRztBQUNILFNBQWdCLFlBQVksQ0FDMUIsS0FBeUI7SUFFekIsTUFBTSxHQUFHLEdBQUcsS0FBSyxZQUFZLDRCQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUUvRCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUNyQyxpQkFBTyxDQUFDLEdBQUcsQ0FBQywyQkFBZSxDQUFDLEtBQUssQ0FBQyxFQUNsQyxHQUFHLENBQ0osQ0FBQztJQUNGLElBQUksUUFBUSxFQUFFLENBQUM7UUFDYixPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBQ0QsSUFBSSxLQUFLLFlBQVksNEJBQUssRUFBRSxDQUFDO1FBQzNCLE9BQU8sS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDaEMsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQztBQUNwQixDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQ2xDLEtBQXlCLEVBQ3pCLEdBQUcsSUFBYztJQUVqQixPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3RvciwgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBBZGFwdGVyIH0gZnJvbSBcIi4uL3BlcnNpc3RlbmNlL0FkYXB0ZXJcIjtcbmltcG9ydCB7IFBlcnNpc3RlbmNlS2V5cyB9IGZyb20gXCIuLi9wZXJzaXN0ZW5jZS9jb25zdGFudHNcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gR2V0cyB0aGUgdGFibGUgbmFtZSBmb3IgYSBtb2RlbFxuICogQHN1bW1hcnkgUmV0cmlldmVzIHRoZSB0YWJsZSBuYW1lIGFzc29jaWF0ZWQgd2l0aCBhIG1vZGVsIGJ5IGNoZWNraW5nIG1ldGFkYXRhIG9yIGZhbGxpbmcgYmFjayB0byB0aGUgY29uc3RydWN0b3IgbmFtZVxuICogQHRlbXBsYXRlIE0gLSBUeXBlIHRoYXQgZXh0ZW5kcyBNb2RlbFxuICogQHBhcmFtIHtNIHwgQ29uc3RydWN0b3I8TT59IG1vZGVsIC0gVGhlIG1vZGVsIGluc3RhbmNlIG9yIGNvbnN0cnVjdG9yIHRvIGdldCB0aGUgdGFibGUgbmFtZSBmb3JcbiAqIEByZXR1cm4ge3N0cmluZ30gVGhlIHRhYmxlIG5hbWUgZm9yIHRoZSBtb2RlbFxuICogQGZ1bmN0aW9uIGdldFRhYmxlTmFtZVxuICogQG1lbWJlck9mIG1vZHVsZTpjb3JlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUYWJsZU5hbWU8TSBleHRlbmRzIE1vZGVsPihcbiAgbW9kZWw6IE0gfCBDb25zdHJ1Y3RvcjxNPlxuKTogc3RyaW5nIHtcbiAgY29uc3Qgb2JqID0gbW9kZWwgaW5zdGFuY2VvZiBNb2RlbCA/IG1vZGVsLmNvbnN0cnVjdG9yIDogbW9kZWw7XG5cbiAgY29uc3QgbWV0YWRhdGEgPSBSZWZsZWN0LmdldE93bk1ldGFkYXRhKFxuICAgIEFkYXB0ZXIua2V5KFBlcnNpc3RlbmNlS2V5cy5UQUJMRSksXG4gICAgb2JqXG4gICk7XG4gIGlmIChtZXRhZGF0YSkge1xuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfVxuICBpZiAobW9kZWwgaW5zdGFuY2VvZiBNb2RlbCkge1xuICAgIHJldHVybiBtb2RlbC5jb25zdHJ1Y3Rvci5uYW1lO1xuICB9XG4gIHJldHVybiBtb2RlbC5uYW1lO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBHZW5lcmF0ZXMgYSBzZXF1ZW5jZSBuYW1lIGZvciBhIG1vZGVsXG4gKiBAc3VtbWFyeSBDcmVhdGVzIGEgc3RhbmRhcmRpemVkIHNlcXVlbmNlIG5hbWUgYnkgY29tYmluaW5nIHRoZSB0YWJsZSBuYW1lIHdpdGggYWRkaXRpb25hbCBhcmd1bWVudHNcbiAqIEB0ZW1wbGF0ZSBNIC0gVHlwZSB0aGF0IGV4dGVuZHMgTW9kZWxcbiAqIEBwYXJhbSB7TSB8IENvbnN0cnVjdG9yPE0+fSBtb2RlbCAtIFRoZSBtb2RlbCBpbnN0YW5jZSBvciBjb25zdHJ1Y3RvciB0byBnZW5lcmF0ZSB0aGUgc2VxdWVuY2UgbmFtZSBmb3JcbiAqIEBwYXJhbSB7Li4uc3RyaW5nfSBhcmdzIC0gQWRkaXRpb25hbCBzdHJpbmcgYXJndW1lbnRzIHRvIGFwcGVuZCB0byB0aGUgc2VxdWVuY2UgbmFtZVxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgZ2VuZXJhdGVkIHNlcXVlbmNlIG5hbWVcbiAqIEBmdW5jdGlvbiBzZXF1ZW5jZU5hbWVGb3JNb2RlbFxuICogQG1lbWJlck9mIG1vZHVsZTpjb3JlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXF1ZW5jZU5hbWVGb3JNb2RlbDxNIGV4dGVuZHMgTW9kZWw+KFxuICBtb2RlbDogTSB8IENvbnN0cnVjdG9yPE0+LFxuICAuLi5hcmdzOiBzdHJpbmdbXVxuKSB7XG4gIHJldHVybiBbZ2V0VGFibGVOYW1lKG1vZGVsKSwgLi4uYXJnc10uam9pbihcIl9cIik7XG59XG4iXX0=
|
package/lib/identity/utils.d.ts
CHANGED
@@ -1,3 +1,22 @@
|
|
1
1
|
import { Constructor, Model } from "@decaf-ts/decorator-validation";
|
2
|
-
|
2
|
+
/**
|
3
|
+
* @description Gets the table name for a model
|
4
|
+
* @summary Retrieves the table name associated with a model by checking metadata or falling back to the constructor name
|
5
|
+
* @template M - Type that extends Model
|
6
|
+
* @param {M | Constructor<M>} model - The model instance or constructor to get the table name for
|
7
|
+
* @return {string} The table name for the model
|
8
|
+
* @function getTableName
|
9
|
+
* @memberOf module:core
|
10
|
+
*/
|
11
|
+
export declare function getTableName<M extends Model>(model: M | Constructor<M>): string;
|
12
|
+
/**
|
13
|
+
* @description Generates a sequence name for a model
|
14
|
+
* @summary Creates a standardized sequence name by combining the table name with additional arguments
|
15
|
+
* @template M - Type that extends Model
|
16
|
+
* @param {M | Constructor<M>} model - The model instance or constructor to generate the sequence name for
|
17
|
+
* @param {...string} args - Additional string arguments to append to the sequence name
|
18
|
+
* @return {string} The generated sequence name
|
19
|
+
* @function sequenceNameForModel
|
20
|
+
* @memberOf module:core
|
21
|
+
*/
|
3
22
|
export declare function sequenceNameForModel<M extends Model>(model: M | Constructor<M>, ...args: string[]): string;
|
package/lib/index.cjs
CHANGED
@@ -1,4 +1,11 @@
|
|
1
1
|
"use strict";
|
2
|
+
/**
|
3
|
+
* @module core
|
4
|
+
* @description Core module for the Decaf TypeScript framework
|
5
|
+
* @summary This module provides the foundational components of the Decaf framework, including identity management,
|
6
|
+
* model definitions, repository patterns, persistence layer, query building, and utility functions.
|
7
|
+
* It exports functionality from various submodules and sets up the injectable registry for repository decorators.
|
8
|
+
*/
|
2
9
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
10
|
if (k2 === undefined) k2 = k;
|
4
11
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
@@ -17,30 +24,21 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
24
|
exports.VERSION = void 0;
|
18
25
|
const repository_1 = require("./repository/index.cjs");
|
19
26
|
const injectable_decorators_1 = require("@decaf-ts/injectable-decorators");
|
20
|
-
|
21
|
-
|
22
|
-
* @description Module description
|
23
|
-
* @module ts-workspace
|
24
|
-
*/
|
25
|
-
/**
|
26
|
-
* @summary Namespace summary
|
27
|
-
* @description Namespace description
|
28
|
-
* @namespace Namespace
|
29
|
-
* @memberOf module:ts-workspace
|
30
|
-
*/
|
27
|
+
// overrides the previous Injectables registry to enable the @repository decorator
|
28
|
+
injectable_decorators_1.Injectables.setRegistry(new repository_1.InjectablesRegistry());
|
31
29
|
__exportStar(require("./identity/index.cjs"), exports);
|
32
30
|
__exportStar(require("./interfaces/index.cjs"), exports);
|
33
31
|
__exportStar(require("./model/index.cjs"), exports);
|
34
|
-
__exportStar(require("./persistence/index.cjs"), exports);
|
35
32
|
__exportStar(require("./query/index.cjs"), exports);
|
36
33
|
__exportStar(require("./repository/index.cjs"), exports);
|
37
|
-
__exportStar(require("./
|
38
|
-
|
34
|
+
__exportStar(require("./utils/index.cjs"), exports);
|
35
|
+
//left to last on purpose
|
36
|
+
__exportStar(require("./persistence/index.cjs"), exports);
|
39
37
|
/**
|
40
|
-
* @
|
41
|
-
* @
|
38
|
+
* @description Stores the current package version
|
39
|
+
* @summary A constant representing the version of the core package
|
42
40
|
* @const VERSION
|
43
|
-
* @memberOf module:
|
41
|
+
* @memberOf module:core
|
44
42
|
*/
|
45
|
-
exports.VERSION = "0.5.
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
43
|
+
exports.VERSION = "0.5.1";
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCx1REFBbUQ7QUFDbkQsMkVBQThEO0FBRTlELGtGQUFrRjtBQUNsRixtQ0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLGdDQUFtQixFQUFFLENBQUMsQ0FBQztBQUVuRCx1REFBMkI7QUFDM0IseURBQTZCO0FBQzdCLG9EQUF3QjtBQUN4QixvREFBd0I7QUFDeEIseURBQTZCO0FBQzdCLG9EQUF3QjtBQUN4Qix5QkFBeUI7QUFDekIsMERBQThCO0FBRTlCOzs7OztHQUtHO0FBQ1UsUUFBQSxPQUFPLEdBQUcsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGNvcmVcbiAqIEBkZXNjcmlwdGlvbiBDb3JlIG1vZHVsZSBmb3IgdGhlIERlY2FmIFR5cGVTY3JpcHQgZnJhbWV3b3JrXG4gKiBAc3VtbWFyeSBUaGlzIG1vZHVsZSBwcm92aWRlcyB0aGUgZm91bmRhdGlvbmFsIGNvbXBvbmVudHMgb2YgdGhlIERlY2FmIGZyYW1ld29yaywgaW5jbHVkaW5nIGlkZW50aXR5IG1hbmFnZW1lbnQsIFxuICogbW9kZWwgZGVmaW5pdGlvbnMsIHJlcG9zaXRvcnkgcGF0dGVybnMsIHBlcnNpc3RlbmNlIGxheWVyLCBxdWVyeSBidWlsZGluZywgYW5kIHV0aWxpdHkgZnVuY3Rpb25zLlxuICogSXQgZXhwb3J0cyBmdW5jdGlvbmFsaXR5IGZyb20gdmFyaW91cyBzdWJtb2R1bGVzIGFuZCBzZXRzIHVwIHRoZSBpbmplY3RhYmxlIHJlZ2lzdHJ5IGZvciByZXBvc2l0b3J5IGRlY29yYXRvcnMuXG4gKi9cblxuaW1wb3J0IHsgSW5qZWN0YWJsZXNSZWdpc3RyeSB9IGZyb20gXCIuL3JlcG9zaXRvcnlcIjtcbmltcG9ydCB7IEluamVjdGFibGVzIH0gZnJvbSBcIkBkZWNhZi10cy9pbmplY3RhYmxlLWRlY29yYXRvcnNcIjtcblxuLy8gb3ZlcnJpZGVzIHRoZSBwcmV2aW91cyBJbmplY3RhYmxlcyByZWdpc3RyeSB0byBlbmFibGUgdGhlIEByZXBvc2l0b3J5IGRlY29yYXRvclxuSW5qZWN0YWJsZXMuc2V0UmVnaXN0cnkobmV3IEluamVjdGFibGVzUmVnaXN0cnkoKSk7XG5cbmV4cG9ydCAqIGZyb20gXCIuL2lkZW50aXR5XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9pbnRlcmZhY2VzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9tb2RlbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcXVlcnlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JlcG9zaXRvcnlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxzXCI7XG4vL2xlZnQgdG8gbGFzdCBvbiBwdXJwb3NlXG5leHBvcnQgKiBmcm9tIFwiLi9wZXJzaXN0ZW5jZVwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBTdG9yZXMgdGhlIGN1cnJlbnQgcGFja2FnZSB2ZXJzaW9uXG4gKiBAc3VtbWFyeSBBIGNvbnN0YW50IHJlcHJlc2VudGluZyB0aGUgdmVyc2lvbiBvZiB0aGUgY29yZSBwYWNrYWdlXG4gKiBAY29uc3QgVkVSU0lPTlxuICogQG1lbWJlck9mIG1vZHVsZTpjb3JlXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gXCIjI1ZFUlNJT04jI1wiO1xuIl19
|
package/lib/index.d.ts
CHANGED
@@ -1,25 +1,21 @@
|
|
1
1
|
/**
|
2
|
-
* @
|
3
|
-
* @description
|
4
|
-
* @module
|
5
|
-
|
6
|
-
|
7
|
-
* @summary Namespace summary
|
8
|
-
* @description Namespace description
|
9
|
-
* @namespace Namespace
|
10
|
-
* @memberOf module:ts-workspace
|
2
|
+
* @module core
|
3
|
+
* @description Core module for the Decaf TypeScript framework
|
4
|
+
* @summary This module provides the foundational components of the Decaf framework, including identity management,
|
5
|
+
* model definitions, repository patterns, persistence layer, query building, and utility functions.
|
6
|
+
* It exports functionality from various submodules and sets up the injectable registry for repository decorators.
|
11
7
|
*/
|
12
8
|
export * from "./identity";
|
13
9
|
export * from "./interfaces";
|
14
10
|
export * from "./model";
|
15
|
-
export * from "./persistence";
|
16
11
|
export * from "./query";
|
17
12
|
export * from "./repository";
|
18
|
-
export * from "./
|
13
|
+
export * from "./utils";
|
14
|
+
export * from "./persistence";
|
19
15
|
/**
|
20
|
-
* @
|
21
|
-
* @
|
16
|
+
* @description Stores the current package version
|
17
|
+
* @summary A constant representing the version of the core package
|
22
18
|
* @const VERSION
|
23
|
-
* @memberOf module:
|
19
|
+
* @memberOf module:core
|
24
20
|
*/
|
25
|
-
export declare const VERSION = "0.5.
|
21
|
+
export declare const VERSION = "0.5.1";
|
@@ -1,3 +1,3 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXJyb3JQYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJmYWNlcy9FcnJvclBhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEludGVyZmFjZSBmb3IgcGFyc2luZyBlcnJvcnNcbiAqIEBzdW1tYXJ5IERlZmluZXMgYSBjb250cmFjdCBmb3Igb2JqZWN0cyB0aGF0IGNhbiBwYXJzZSBnZW5lcmljIEVycm9yIG9iamVjdHMgaW50byBCYXNlRXJyb3IgaW5zdGFuY2VzXG4gKiBAaW50ZXJmYWNlIEVycm9yUGFyc2VyXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmNvcmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFcnJvclBhcnNlciB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUGFyc2VzIGEgZ2VuZXJpYyBFcnJvciBpbnRvIGEgQmFzZUVycm9yXG4gICAqIEBzdW1tYXJ5IENvbnZlcnRzIGEgc3RhbmRhcmQgRXJyb3Igb2JqZWN0IGludG8gYSBtb3JlIHNwZWNpZmljIEJhc2VFcnJvciB0eXBlXG4gICAqIEBwYXJhbSB7RXJyb3J9IGVycm9yIC0gVGhlIGVycm9yIHRvIGJlIHBhcnNlZFxuICAgKiBAcmV0dXJuIHtCYXNlRXJyb3J9IFRoZSBwYXJzZWQgZXJyb3IgYXMgYSBCYXNlRXJyb3IgaW5zdGFuY2VcbiAgICovXG4gIHBhcnNlRXJyb3IoZXJyb3I6IEVycm9yKTogQmFzZUVycm9yO1xufVxuIl19
|
@@ -1,4 +1,16 @@
|
|
1
1
|
import { BaseError } from "@decaf-ts/db-decorators";
|
2
|
+
/**
|
3
|
+
* @description Interface for parsing errors
|
4
|
+
* @summary Defines a contract for objects that can parse generic Error objects into BaseError instances
|
5
|
+
* @interface ErrorParser
|
6
|
+
* @memberOf module:core
|
7
|
+
*/
|
2
8
|
export interface ErrorParser {
|
9
|
+
/**
|
10
|
+
* @description Parses a generic Error into a BaseError
|
11
|
+
* @summary Converts a standard Error object into a more specific BaseError type
|
12
|
+
* @param {Error} error - The error to be parsed
|
13
|
+
* @return {BaseError} The parsed error as a BaseError instance
|
14
|
+
*/
|
3
15
|
parseError(error: Error): BaseError;
|
4
16
|
}
|
@@ -1,3 +1,3 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJmYWNlcy9FeGVjdXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciBleGVjdXRhYmxlIG9wZXJhdGlvbnNcbiAqIEBzdW1tYXJ5IERlZmluZXMgYSBjb250cmFjdCBmb3Igb2JqZWN0cyB0aGF0IGNhbiBleGVjdXRlIGFuIG9wZXJhdGlvbiBhbmQgcmV0dXJuIGEgcmVzdWx0XG4gKiBAdGVtcGxhdGUgUiAtIFRoZSB0eXBlIG9mIHJlc3VsdCByZXR1cm5lZCBieSB0aGUgZXhlY3V0ZSBtZXRob2RcbiAqIEBpbnRlcmZhY2UgRXhlY3V0b3JcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Y29yZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWN1dG9yPFI+IHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBFeGVjdXRlcyB0aGUgb3BlcmF0aW9uXG4gICAqIEBzdW1tYXJ5IFBlcmZvcm1zIHRoZSBvcGVyYXRpb24gYW5kIHJldHVybnMgYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHJlc3VsdFxuICAgKiBAdGVtcGxhdGUgUiAtIFRoZSB0eXBlIG9mIHJlc3VsdCByZXR1cm5lZCBieSB0aGUgZXhlY3V0ZSBtZXRob2RcbiAgICogQHJldHVybiB7UHJvbWlzZTxSPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHJlc3VsdCBvZiB0eXBlIFJcbiAgICovXG4gIGV4ZWN1dGUoKTogUHJvbWlzZTxSPjtcbn1cbiJdfQ==
|
@@ -1,19 +1,16 @@
|
|
1
1
|
/**
|
2
|
-
* @
|
3
|
-
*
|
4
|
-
* @
|
5
|
-
*
|
2
|
+
* @description Interface for executable operations
|
3
|
+
* @summary Defines a contract for objects that can execute an operation and return a result
|
4
|
+
* @template R - The type of result returned by the execute method
|
6
5
|
* @interface Executor
|
7
|
-
*
|
8
|
-
* @category Query
|
6
|
+
* @memberOf module:core
|
9
7
|
*/
|
10
|
-
export interface Executor {
|
8
|
+
export interface Executor<R> {
|
11
9
|
/**
|
12
|
-
* @
|
13
|
-
*
|
14
|
-
* @
|
15
|
-
*
|
16
|
-
* @method
|
10
|
+
* @description Executes the operation
|
11
|
+
* @summary Performs the operation and returns a promise that resolves to the result
|
12
|
+
* @template R - The type of result returned by the execute method
|
13
|
+
* @return {Promise<R>} A promise that resolves to the result of type R
|
17
14
|
*/
|
18
|
-
execute
|
15
|
+
execute(): Promise<R>;
|
19
16
|
}
|
@@ -1,3 +1,3 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT2JzZXJ2YWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbnRlcmZhY2VzL09ic2VydmFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmVyIH0gZnJvbSBcIi4vT2JzZXJ2ZXJcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciBvYmplY3RzIHRoYXQgY2FuIGJlIG9ic2VydmVkXG4gKiBAc3VtbWFyeSBEZWZpbmVzIGEgY29udHJhY3QgZm9yIG9iamVjdHMgdGhhdCBpbXBsZW1lbnQgdGhlIE9ic2VydmVyIHBhdHRlcm4sIGFsbG93aW5nIHRoZW0gdG8gcmVnaXN0ZXIgb2JzZXJ2ZXJzLFxuICogcmVtb3ZlIG9ic2VydmVycywgYW5kIG5vdGlmeSBhbGwgcmVnaXN0ZXJlZCBvYnNlcnZlcnMgb2Ygc3RhdGUgY2hhbmdlc1xuICogQGludGVyZmFjZSBPYnNlcnZhYmxlXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmNvcmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPYnNlcnZhYmxlIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZWdpc3RlcnMgYW4gb2JzZXJ2ZXIgdG8gcmVjZWl2ZSBub3RpZmljYXRpb25zXG4gICAqIEBzdW1tYXJ5IEFkZHMgYW4gb2JzZXJ2ZXIgdG8gdGhlIGxpc3Qgb2Ygb2JzZXJ2ZXJzIHRoYXQgd2lsbCBiZSBub3RpZmllZCBvZiBzdGF0ZSBjaGFuZ2VzXG4gICAqIEBwYXJhbSB7T2JzZXJ2ZXJ9IG9ic2VydmVyIC0gVGhlIG9ic2VydmVyIHRvIHJlZ2lzdGVyXG4gICAqIEBwYXJhbSB7Li4uYW55W119IGFyZ3MgLSBBZGRpdGlvbmFsIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBvYnNlcnZlclxuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKi9cbiAgb2JzZXJ2ZShvYnNlcnZlcjogT2JzZXJ2ZXIsIC4uLmFyZ3M6IGFueVtdKTogdm9pZDtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFVucmVnaXN0ZXJzIGFuIG9ic2VydmVyIGZyb20gcmVjZWl2aW5nIG5vdGlmaWNhdGlvbnNcbiAgICogQHN1bW1hcnkgUmVtb3ZlcyBhbiBvYnNlcnZlciBmcm9tIHRoZSBsaXN0IG9mIG9ic2VydmVycyB0aGF0IHdpbGwgYmUgbm90aWZpZWQgb2Ygc3RhdGUgY2hhbmdlc1xuICAgKiBAcGFyYW0ge09ic2VydmVyfSBvYnNlcnZlciAtIFRoZSBvYnNlcnZlciB0byB1bnJlZ2lzdGVyXG4gICAqIEBwYXJhbSB7Li4uYW55W119IGFyZ3MgLSBBZGRpdGlvbmFsIGFyZ3VtZW50cyB0byBoZWxwIGlkZW50aWZ5IHRoZSBvYnNlcnZlclxuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKi9cbiAgdW5PYnNlcnZlKG9ic2VydmVyOiBPYnNlcnZlciwgLi4uYXJnczogYW55W10pOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTm90aWZpZXMgYWxsIHJlZ2lzdGVyZWQgb2JzZXJ2ZXJzIG9mIGEgc3RhdGUgY2hhbmdlXG4gICAqIEBzdW1tYXJ5IENhbGxzIHRoZSB1cGRhdGUgbWV0aG9kIG9uIGFsbCByZWdpc3RlcmVkIG9ic2VydmVycywgcGFzc2luZyBhbnkgcHJvdmlkZWQgYXJndW1lbnRzXG4gICAqIEBwYXJhbSB7Li4uYW55W119IGFyZ3MgLSBBcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgb2JzZXJ2ZXJzJyB1cGRhdGUgbWV0aG9kc1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIGFsbCBvYnNlcnZlcnMgaGF2ZSBiZWVuIHVwZGF0ZWRcbiAgICovXG4gIHVwZGF0ZU9ic2VydmVycyguLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8dm9pZD47XG59XG4iXX0=
|
@@ -1,31 +1,33 @@
|
|
1
1
|
import { Observer } from "./Observer";
|
2
2
|
/**
|
3
|
-
* @
|
4
|
-
* @
|
5
|
-
*
|
3
|
+
* @description Interface for objects that can be observed
|
4
|
+
* @summary Defines a contract for objects that implement the Observer pattern, allowing them to register observers,
|
5
|
+
* remove observers, and notify all registered observers of state changes
|
6
6
|
* @interface Observable
|
7
|
-
*
|
8
|
-
* @category Observables
|
7
|
+
* @memberOf module:core
|
9
8
|
*/
|
10
9
|
export interface Observable {
|
11
10
|
/**
|
12
|
-
* @
|
13
|
-
* @
|
14
|
-
*
|
15
|
-
* @
|
11
|
+
* @description Registers an observer to receive notifications
|
12
|
+
* @summary Adds an observer to the list of observers that will be notified of state changes
|
13
|
+
* @param {Observer} observer - The observer to register
|
14
|
+
* @param {...any[]} args - Additional arguments to pass to the observer
|
15
|
+
* @return {void}
|
16
16
|
*/
|
17
|
-
observe(observer: Observer): void;
|
17
|
+
observe(observer: Observer, ...args: any[]): void;
|
18
18
|
/**
|
19
|
-
* @
|
20
|
-
* @
|
21
|
-
*
|
22
|
-
* @
|
19
|
+
* @description Unregisters an observer from receiving notifications
|
20
|
+
* @summary Removes an observer from the list of observers that will be notified of state changes
|
21
|
+
* @param {Observer} observer - The observer to unregister
|
22
|
+
* @param {...any[]} args - Additional arguments to help identify the observer
|
23
|
+
* @return {void}
|
23
24
|
*/
|
24
|
-
unObserve(observer: Observer): void;
|
25
|
+
unObserve(observer: Observer, ...args: any[]): void;
|
25
26
|
/**
|
26
|
-
* @
|
27
|
-
* @
|
28
|
-
* @
|
27
|
+
* @description Notifies all registered observers of a state change
|
28
|
+
* @summary Calls the update method on all registered observers, passing any provided arguments
|
29
|
+
* @param {...any[]} args - Arguments to pass to the observers' update methods
|
30
|
+
* @return {Promise<void>} A promise that resolves when all observers have been updated
|
29
31
|
*/
|
30
32
|
updateObservers(...args: any[]): Promise<void>;
|
31
33
|
}
|
@@ -1,3 +1,3 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT2JzZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJmYWNlcy9PYnNlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciBvYmplY3RzIHRoYXQgb2JzZXJ2ZSBzdGF0ZSBjaGFuZ2VzXG4gKiBAc3VtbWFyeSBEZWZpbmVzIGEgY29udHJhY3QgZm9yIG9iamVjdHMgdGhhdCBpbXBsZW1lbnQgdGhlIE9ic2VydmVyIHBhdHRlcm4sIGFsbG93aW5nIHRoZW0gdG8gYmUgbm90aWZpZWQgb2YgY2hhbmdlcyBpbiBPYnNlcnZhYmxlIG9iamVjdHNcbiAqIEBpbnRlcmZhY2UgT2JzZXJ2ZXJcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Y29yZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9ic2VydmVyIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBVcGRhdGVzIHRoZSBvYnNlcnZlciB3aXRoIG5ldyBzdGF0ZSBpbmZvcm1hdGlvblxuICAgKiBAc3VtbWFyeSBDYWxsZWQgYnkgYW4gT2JzZXJ2YWJsZSB3aGVuIGl0cyBzdGF0ZSBjaGFuZ2VzLCBhbGxvd2luZyB0aGUgT2JzZXJ2ZXIgdG8gcmVhY3QgdG8gdGhvc2UgY2hhbmdlc1xuICAgKiBAcGFyYW0gey4uLmFueVtdfSBhcmdzIC0gQXJndW1lbnRzIGNvbnRhaW5pbmcgc3RhdGUgaW5mb3JtYXRpb24gZnJvbSB0aGUgT2JzZXJ2YWJsZVxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBvYnNlcnZlciBoYXMgcHJvY2Vzc2VkIHRoZSB1cGRhdGVcbiAgICovXG4gIHJlZnJlc2goLi4uYXJnczogYW55W10pOiBQcm9taXNlPHZvaWQ+O1xufVxuIl19
|
@@ -1,16 +1,15 @@
|
|
1
1
|
/**
|
2
|
-
* @
|
3
|
-
* @
|
4
|
-
*
|
2
|
+
* @description Interface for objects that observe state changes
|
3
|
+
* @summary Defines a contract for objects that implement the Observer pattern, allowing them to be notified of changes in Observable objects
|
5
4
|
* @interface Observer
|
6
|
-
*
|
7
|
-
* @category Observables
|
5
|
+
* @memberOf module:core
|
8
6
|
*/
|
9
7
|
export interface Observer {
|
10
8
|
/**
|
11
|
-
* @
|
12
|
-
* @
|
13
|
-
* @
|
9
|
+
* @description Updates the observer with new state information
|
10
|
+
* @summary Called by an Observable when its state changes, allowing the Observer to react to those changes
|
11
|
+
* @param {...any[]} args - Arguments containing state information from the Observable
|
12
|
+
* @return {Promise<void>} A promise that resolves when the observer has processed the update
|
14
13
|
*/
|
15
14
|
refresh(...args: any[]): Promise<void>;
|
16
15
|
}
|
@@ -1,3 +1,3 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFnaW5hdGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJmYWNlcy9QYWdpbmF0YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFnaW5hdG9yIH0gZnJvbSBcIi4uL3F1ZXJ5L1BhZ2luYXRvclwiO1xuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEludGVyZmFjZSBmb3Igb2JqZWN0cyB0aGF0IHN1cHBvcnQgcGFnaW5hdGlvblxuICogQHN1bW1hcnkgRGVmaW5lcyBhIGNvbnRyYWN0IGZvciBvYmplY3RzIHRoYXQgY2FuIHBhZ2luYXRlIHRoZWlyIHJlc3VsdHMsIGFsbG93aW5nIGZvciBlZmZpY2llbnQgZGF0YSByZXRyaWV2YWwgaW4gY2h1bmtzXG4gKiBAdGVtcGxhdGUgTSAtIFRoZSBtb2RlbCB0eXBlLCBtdXN0IGV4dGVuZCBNb2RlbFxuICogQHRlbXBsYXRlIFIgLSBUaGUgcmVzdWx0IHR5cGUgcmV0dXJuZWQgYnkgdGhlIHBhZ2luYXRvclxuICogQHRlbXBsYXRlIFEgLSBUaGUgcXVlcnkgdHlwZSB1c2VkIGZvciBwYWdpbmF0aW9uXG4gKiBAaW50ZXJmYWNlIFBhZ2luYXRhYmxlXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmNvcmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0YWJsZTxNIGV4dGVuZHMgTW9kZWwsIFIsIFE+IHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgcGFnaW5hdG9yIHdpdGggdGhlIHNwZWNpZmllZCBwYWdlIHNpemVcbiAgICogQHN1bW1hcnkgSW5pdGlhbGl6ZXMgYSBwYWdpbmF0b3IgdGhhdCBjYW4gYmUgdXNlZCB0byByZXRyaWV2ZSBkYXRhIGluIHBhZ2VzIG9mIHRoZSBzcGVjaWZpZWQgc2l6ZVxuICAgKiBAcGFyYW0ge251bWJlcn0gc2l6ZSAtIFRoZSBudW1iZXIgb2YgaXRlbXMgcGVyIHBhZ2VcbiAgICogQHJldHVybiB7UHJvbWlzZTxQYWdpbmF0b3I+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIHBhZ2luYXRvciBmb3IgdGhlIHNwZWNpZmllZCBtb2RlbCwgcmVzdWx0LCBhbmQgcXVlcnkgdHlwZXNcbiAgICovXG4gIHBhZ2luYXRlKHNpemU6IG51bWJlcik6IFByb21pc2U8UGFnaW5hdG9yPE0sIFIsIFE+Pjtcbn1cbiJdfQ==
|
@@ -1,4 +1,20 @@
|
|
1
1
|
import { Paginator } from "../query/Paginator";
|
2
|
-
|
3
|
-
|
2
|
+
import { Model } from "@decaf-ts/decorator-validation";
|
3
|
+
/**
|
4
|
+
* @description Interface for objects that support pagination
|
5
|
+
* @summary Defines a contract for objects that can paginate their results, allowing for efficient data retrieval in chunks
|
6
|
+
* @template M - The model type, must extend Model
|
7
|
+
* @template R - The result type returned by the paginator
|
8
|
+
* @template Q - The query type used for pagination
|
9
|
+
* @interface Paginatable
|
10
|
+
* @memberOf module:core
|
11
|
+
*/
|
12
|
+
export interface Paginatable<M extends Model, R, Q> {
|
13
|
+
/**
|
14
|
+
* @description Creates a paginator with the specified page size
|
15
|
+
* @summary Initializes a paginator that can be used to retrieve data in pages of the specified size
|
16
|
+
* @param {number} size - The number of items per page
|
17
|
+
* @return {Promise<Paginator>} A promise that resolves to a paginator for the specified model, result, and query types
|
18
|
+
*/
|
19
|
+
paginate(size: number): Promise<Paginator<M, R, Q>>;
|
4
20
|
}
|
@@ -1,3 +1,3 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUXVlcmlhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ludGVyZmFjZXMvUXVlcmlhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25kaXRpb24sIFNlbGVjdFNlbGVjdG9yLCBXaGVyZU9wdGlvbiB9IGZyb20gXCIuLi9xdWVyeVwiO1xuaW1wb3J0IHsgT3JkZXJEaXJlY3Rpb24gfSBmcm9tIFwiLi4vcmVwb3NpdG9yeVwiO1xuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEludGVyZmFjZSBmb3Igb2JqZWN0cyB0aGF0IHN1cHBvcnQgcXVlcnlpbmdcbiAqIEBzdW1tYXJ5IERlZmluZXMgYSBjb250cmFjdCBmb3Igb2JqZWN0cyB0aGF0IGNhbiBiZSBxdWVyaWVkIHdpdGggdmFyaW91cyBjb25kaXRpb25zLCBzZWxlY3Rpb25zLCBhbmQgb3JkZXJpbmdcbiAqIEB0ZW1wbGF0ZSBNIC0gVGhlIG1vZGVsIHR5cGUsIG11c3QgZXh0ZW5kIE1vZGVsXG4gKiBAaW50ZXJmYWNlIFF1ZXJpYWJsZVxuICogQG1lbWJlck9mIG1vZHVsZTpjb3JlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcmlhYmxlPE0gZXh0ZW5kcyBNb2RlbD4ge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFNlbGVjdHMgYWxsIHByb3BlcnRpZXMgZnJvbSB0aGUgbW9kZWxcbiAgICogQHN1bW1hcnkgQ3JlYXRlcyBhIHF1ZXJ5IHRoYXQgd2lsbCByZXR1cm4gYWxsIHByb3BlcnRpZXMgb2YgdGhlIG1vZGVsXG4gICAqIEB0ZW1wbGF0ZSBTIC0gVGhlIHNlbGVjdG9yIHR5cGUgZXh0ZW5kaW5nIGFuIGFycmF5IG9mIFNlbGVjdFNlbGVjdG9yPE0+XG4gICAqIEByZXR1cm4ge1doZXJlT3B0aW9ufSBBIFdoZXJlT3B0aW9uIG9iamVjdCBmb3IgZnVydGhlciBxdWVyeSBjb25maWd1cmF0aW9uXG4gICAqL1xuICBzZWxlY3Q8XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIFMgZXh0ZW5kcyByZWFkb25seSBTZWxlY3RTZWxlY3RvcjxNPltdLFxuICA+KCk6IFdoZXJlT3B0aW9uPE0sIE1bXT47XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBTZWxlY3RzIHNwZWNpZmljIHByb3BlcnRpZXMgZnJvbSB0aGUgbW9kZWxcbiAgICogQHN1bW1hcnkgQ3JlYXRlcyBhIHF1ZXJ5IHRoYXQgd2lsbCByZXR1cm4gb25seSB0aGUgc3BlY2lmaWVkIHByb3BlcnRpZXMgb2YgdGhlIG1vZGVsXG4gICAqIEB0ZW1wbGF0ZSBTIC0gVGhlIHNlbGVjdG9yIHR5cGUgZXh0ZW5kaW5nIGFuIGFycmF5IG9mIFNlbGVjdFNlbGVjdG9yPE0+XG4gICAqIEBwYXJhbSBzZWxlY3RvciAtIEFycmF5IG9mIHByb3BlcnR5IG5hbWVzIHRvIHNlbGVjdFxuICAgKiBAcmV0dXJuIEEgV2hlcmVPcHRpb24gb2JqZWN0IGZvciBmdXJ0aGVyIHF1ZXJ5IGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHNlbGVjdDxTIGV4dGVuZHMgcmVhZG9ubHkgU2VsZWN0U2VsZWN0b3I8TT5bXT4oXG4gICAgc2VsZWN0b3I6IHJlYWRvbmx5IFsuLi5TXVxuICApOiBXaGVyZU9wdGlvbjxNLCBQaWNrPE0sIFNbbnVtYmVyXT5bXT47XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBTZWxlY3RzIHByb3BlcnRpZXMgZnJvbSB0aGUgbW9kZWxcbiAgICogQHN1bW1hcnkgQ3JlYXRlcyBhIHF1ZXJ5IHRoYXQgd2lsbCByZXR1cm4gZWl0aGVyIGFsbCBwcm9wZXJ0aWVzIG9yIG9ubHkgdGhlIHNwZWNpZmllZCBwcm9wZXJ0aWVzIG9mIHRoZSBtb2RlbFxuICAgKiBAdGVtcGxhdGUgUyAtIFRoZSBzZWxlY3RvciB0eXBlIGV4dGVuZGluZyBhbiBhcnJheSBvZiBTZWxlY3RTZWxlY3RvcjxNPlxuICAgKiBAcGFyYW0gW3NlbGVjdG9yXSAtIE9wdGlvbmFsIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzIHRvIHNlbGVjdFxuICAgKiBAcmV0dXJuIEEgV2hlcmVPcHRpb24gb2JqZWN0IGZvciBmdXJ0aGVyIHF1ZXJ5IGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHNlbGVjdDxTIGV4dGVuZHMgcmVhZG9ubHkgU2VsZWN0U2VsZWN0b3I8TT5bXT4oXG4gICAgc2VsZWN0b3I/OiByZWFkb25seSBbLi4uU11cbiAgKTogV2hlcmVPcHRpb248TSwgTVtdPiB8IFdoZXJlT3B0aW9uPE0sIFBpY2s8TSwgU1tudW1iZXJdPltdPjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEV4ZWN1dGVzIGEgcXVlcnkgd2l0aCB0aGUgc3BlY2lmaWVkIGNvbmRpdGlvbnMgYW5kIG9wdGlvbnNcbiAgICogQHN1bW1hcnkgUmV0cmlldmVzIG1vZGVsIGluc3RhbmNlcyB0aGF0IG1hdGNoIHRoZSBnaXZlbiBjb25kaXRpb24sIG9yZGVyZWQgYW5kIGxpbWl0ZWQgYXMgc3BlY2lmaWVkXG4gICAqIEB0ZW1wbGF0ZSBNIC0gVGhlIG1vZGVsIHR5cGUsIG11c3QgZXh0ZW5kIE1vZGVsXG4gICAqIEBwYXJhbSB7Q29uZGl0aW9uPE0+fSBjb25kaXRpb24gLSBUaGUgY29uZGl0aW9uIHRvIGZpbHRlciByZXN1bHRzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcmRlckJ5IC0gVGhlIHByb3BlcnR5IHRvIG9yZGVyIHJlc3VsdHMgYnlcbiAgICogQHBhcmFtIHtPcmRlckRpcmVjdGlvbn0gb3JkZXIgLSBUaGUgZGlyZWN0aW9uIHRvIG9yZGVyIHJlc3VsdHMgKGFzY2VuZGluZyBvciBkZXNjZW5kaW5nKVxuICAgKiBAcGFyYW0ge251bWJlcn0gW2xpbWl0XSAtIE9wdGlvbmFsIG1heGltdW0gbnVtYmVyIG9mIHJlc3VsdHMgdG8gcmV0dXJuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbc2tpcF0gLSBPcHRpb25hbCBudW1iZXIgb2YgcmVzdWx0cyB0byBza2lwXG4gICAqIEByZXR1cm4ge1Byb21pc2U8TVtdPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYW4gYXJyYXkgb2YgbW9kZWwgaW5zdGFuY2VzXG4gICAqL1xuICBxdWVyeShcbiAgICBjb25kaXRpb246IENvbmRpdGlvbjxNPixcbiAgICBvcmRlckJ5OiBrZXlvZiBNLFxuICAgIG9yZGVyOiBPcmRlckRpcmVjdGlvbixcbiAgICBsaW1pdD86IG51bWJlcixcbiAgICBza2lwPzogbnVtYmVyXG4gICk6IFByb21pc2U8TVtdPjtcbn1cbiJdfQ==
|