@decaf-ts/core 0.5.1 → 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 +2110 -132
- package/dist/core.esm.cjs +2111 -133
- package/lib/esm/identity/decorators.d.ts +52 -7
- package/lib/esm/identity/decorators.js +53 -8
- package/lib/esm/identity/utils.d.ts +19 -0
- package/lib/esm/identity/utils.js +20 -1
- package/lib/esm/index.d.ts +9 -2
- package/lib/esm/index.js +10 -3
- package/lib/esm/interfaces/ErrorParser.d.ts +12 -0
- package/lib/esm/interfaces/ErrorParser.js +1 -1
- package/lib/esm/interfaces/Executor.d.ts +13 -0
- package/lib/esm/interfaces/Executor.js +1 -1
- package/lib/esm/interfaces/Observable.d.ts +27 -0
- package/lib/esm/interfaces/Observable.js +1 -1
- package/lib/esm/interfaces/Observer.d.ts +12 -0
- package/lib/esm/interfaces/Observer.js +1 -1
- package/lib/esm/interfaces/Paginatable.d.ts +15 -0
- package/lib/esm/interfaces/Paginatable.js +1 -1
- package/lib/esm/interfaces/Queriable.d.ts +34 -9
- package/lib/esm/interfaces/Queriable.js +1 -1
- package/lib/esm/interfaces/RawExecutor.d.ts +14 -0
- package/lib/esm/interfaces/RawExecutor.js +1 -1
- package/lib/esm/interfaces/SequenceOptions.d.ts +52 -0
- package/lib/esm/interfaces/SequenceOptions.js +19 -1
- package/lib/esm/model/BaseModel.d.ts +31 -0
- package/lib/esm/model/BaseModel.js +24 -1
- package/lib/esm/model/construction.d.ts +433 -0
- package/lib/esm/model/construction.js +441 -2
- package/lib/esm/model/decorators.d.ts +159 -29
- package/lib/esm/model/decorators.js +160 -30
- package/lib/esm/model/types.d.ts +9 -0
- package/lib/esm/model/types.js +1 -1
- package/lib/esm/persistence/Adapter.d.ts +358 -17
- package/lib/esm/persistence/Adapter.js +287 -19
- package/lib/esm/persistence/Dispatch.d.ts +114 -1
- package/lib/esm/persistence/Dispatch.js +102 -4
- package/lib/esm/persistence/ObserverHandler.d.ts +95 -0
- package/lib/esm/persistence/ObserverHandler.js +96 -1
- package/lib/esm/persistence/Sequence.d.ts +89 -0
- package/lib/esm/persistence/Sequence.js +70 -1
- package/lib/esm/persistence/constants.d.ts +22 -0
- package/lib/esm/persistence/constants.js +23 -1
- 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 -0
- package/lib/esm/persistence/errors.js +24 -1
- package/lib/esm/persistence/types.d.ts +18 -0
- package/lib/esm/persistence/types.js +1 -1
- package/lib/esm/query/Condition.d.ts +78 -31
- package/lib/esm/query/Condition.js +132 -53
- package/lib/esm/query/Paginator.d.ts +56 -0
- package/lib/esm/query/Paginator.js +57 -1
- package/lib/esm/query/Statement.d.ts +51 -0
- package/lib/esm/query/Statement.js +52 -1
- package/lib/esm/query/constants.d.ts +25 -0
- package/lib/esm/query/constants.js +26 -1
- package/lib/esm/query/errors.d.ts +14 -0
- package/lib/esm/query/errors.js +15 -1
- package/lib/esm/query/options.d.ts +21 -3
- package/lib/esm/query/options.js +1 -1
- package/lib/esm/query/selectors.d.ts +26 -0
- package/lib/esm/query/selectors.js +1 -1
- package/lib/esm/ram/RamAdapter.d.ts +311 -0
- package/lib/esm/ram/RamAdapter.js +312 -1
- package/lib/esm/ram/RamContext.d.ts +16 -1
- package/lib/esm/ram/RamContext.js +18 -3
- package/lib/esm/ram/RamPaginator.d.ts +43 -0
- package/lib/esm/ram/RamPaginator.js +54 -2
- package/lib/esm/ram/RamSequence.d.ts +61 -0
- package/lib/esm/ram/RamSequence.js +63 -2
- package/lib/esm/ram/RamStatement.d.ts +74 -0
- package/lib/esm/ram/RamStatement.js +75 -1
- package/lib/esm/ram/constants.d.ts +8 -0
- package/lib/esm/ram/constants.js +9 -1
- package/lib/esm/ram/handlers.d.ts +19 -0
- package/lib/esm/ram/handlers.js +20 -1
- package/lib/esm/ram/model/RamSequence.d.ts +25 -0
- package/lib/esm/ram/model/RamSequence.js +19 -1
- package/lib/esm/ram/types.d.ts +42 -0
- package/lib/esm/ram/types.js +1 -1
- package/lib/esm/repository/Repository.d.ts +363 -8
- package/lib/esm/repository/Repository.js +361 -16
- package/lib/esm/repository/constants.d.ts +25 -0
- package/lib/esm/repository/constants.js +26 -1
- 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 -5
- package/lib/esm/repository/errors.js +13 -6
- package/lib/esm/repository/injectables.d.ts +18 -0
- package/lib/esm/repository/injectables.js +19 -1
- package/lib/esm/repository/types.d.ts +15 -0
- 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 +8 -0
- package/lib/esm/utils/decorators.js +9 -1
- package/lib/esm/utils/errors.d.ts +46 -0
- package/lib/esm/utils/errors.js +47 -1
- package/lib/identity/decorators.cjs +53 -8
- package/lib/identity/decorators.d.ts +52 -7
- package/lib/identity/utils.cjs +20 -1
- package/lib/identity/utils.d.ts +19 -0
- package/lib/index.cjs +10 -3
- package/lib/index.d.ts +9 -2
- 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 +13 -0
- package/lib/interfaces/Observable.cjs +1 -1
- package/lib/interfaces/Observable.d.ts +27 -0
- package/lib/interfaces/Observer.cjs +1 -1
- package/lib/interfaces/Observer.d.ts +12 -0
- package/lib/interfaces/Paginatable.cjs +1 -1
- package/lib/interfaces/Paginatable.d.ts +15 -0
- package/lib/interfaces/Queriable.cjs +1 -1
- package/lib/interfaces/Queriable.d.ts +34 -9
- package/lib/interfaces/RawExecutor.cjs +1 -1
- package/lib/interfaces/RawExecutor.d.ts +14 -0
- package/lib/interfaces/SequenceOptions.cjs +19 -1
- package/lib/interfaces/SequenceOptions.d.ts +52 -0
- 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 +433 -0
- package/lib/model/decorators.cjs +160 -30
- package/lib/model/decorators.d.ts +159 -29
- package/lib/model/types.cjs +1 -1
- package/lib/model/types.d.ts +9 -0
- package/lib/persistence/Adapter.cjs +287 -19
- package/lib/persistence/Adapter.d.ts +358 -17
- package/lib/persistence/Dispatch.cjs +102 -4
- package/lib/persistence/Dispatch.d.ts +114 -1
- package/lib/persistence/ObserverHandler.cjs +96 -1
- package/lib/persistence/ObserverHandler.d.ts +95 -0
- package/lib/persistence/Sequence.cjs +70 -1
- package/lib/persistence/Sequence.d.ts +89 -0
- package/lib/persistence/constants.cjs +23 -1
- package/lib/persistence/constants.d.ts +22 -0
- package/lib/persistence/decorators.cjs +11 -1
- package/lib/persistence/decorators.d.ts +10 -0
- package/lib/persistence/errors.cjs +24 -1
- package/lib/persistence/errors.d.ts +23 -0
- package/lib/persistence/types.cjs +1 -1
- package/lib/persistence/types.d.ts +18 -0
- package/lib/query/Condition.cjs +132 -53
- package/lib/query/Condition.d.ts +78 -31
- package/lib/query/Paginator.cjs +57 -1
- package/lib/query/Paginator.d.ts +56 -0
- package/lib/query/Statement.cjs +52 -1
- package/lib/query/Statement.d.ts +51 -0
- package/lib/query/constants.cjs +26 -1
- package/lib/query/constants.d.ts +25 -0
- package/lib/query/errors.cjs +15 -1
- package/lib/query/errors.d.ts +14 -0
- package/lib/query/options.cjs +1 -1
- package/lib/query/options.d.ts +21 -3
- package/lib/query/selectors.cjs +1 -1
- package/lib/query/selectors.d.ts +26 -0
- package/lib/ram/RamAdapter.cjs +312 -1
- package/lib/ram/RamAdapter.d.ts +311 -0
- package/lib/ram/RamContext.cjs +18 -3
- package/lib/ram/RamContext.d.ts +16 -1
- package/lib/ram/RamPaginator.cjs +54 -2
- package/lib/ram/RamPaginator.d.ts +43 -0
- package/lib/ram/RamSequence.cjs +63 -2
- package/lib/ram/RamSequence.d.ts +61 -0
- package/lib/ram/RamStatement.cjs +75 -1
- package/lib/ram/RamStatement.d.ts +74 -0
- package/lib/ram/constants.cjs +9 -1
- package/lib/ram/constants.d.ts +8 -0
- package/lib/ram/handlers.cjs +20 -1
- package/lib/ram/handlers.d.ts +19 -0
- package/lib/ram/model/RamSequence.cjs +19 -1
- package/lib/ram/model/RamSequence.d.ts +25 -0
- package/lib/ram/types.cjs +1 -1
- package/lib/ram/types.d.ts +42 -0
- package/lib/repository/Repository.cjs +360 -15
- package/lib/repository/Repository.d.ts +363 -8
- package/lib/repository/constants.cjs +26 -1
- package/lib/repository/constants.d.ts +25 -0
- package/lib/repository/decorators.cjs +28 -1
- package/lib/repository/decorators.d.ts +27 -0
- package/lib/repository/errors.cjs +13 -6
- package/lib/repository/errors.d.ts +12 -5
- 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 +15 -0
- package/lib/repository/utils.cjs +12 -1
- package/lib/repository/utils.d.ts +11 -0
- package/lib/utils/decorators.cjs +9 -1
- package/lib/utils/decorators.d.ts +8 -0
- package/lib/utils/errors.cjs +47 -1
- package/lib/utils/errors.d.ts +46 -0
- package/package.json +5 -5
package/lib/query/Paginator.cjs
CHANGED
@@ -2,6 +2,62 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.Paginator = void 0;
|
4
4
|
const errors_1 = require("./errors.cjs");
|
5
|
+
/**
|
6
|
+
* @description Handles pagination for database queries
|
7
|
+
* @summary Provides functionality for navigating through paginated query results
|
8
|
+
*
|
9
|
+
* This abstract class manages the state and navigation of paginated database query results.
|
10
|
+
* It tracks the current page, total pages, and record count, and provides methods for
|
11
|
+
* moving between pages.
|
12
|
+
*
|
13
|
+
* @template M - The model type this paginator operates on
|
14
|
+
* @template R - The return type of the paginated query (defaults to M[])
|
15
|
+
* @template Q - The query type (defaults to any)
|
16
|
+
* @param {Adapter<any, Q, any, any>} adapter - The database adapter to use for executing queries
|
17
|
+
* @param {Q} query - The query to paginate
|
18
|
+
* @param {number} size - The number of records per page
|
19
|
+
* @param {Constructor<M>} clazz - The constructor for the model type
|
20
|
+
* @class Paginator
|
21
|
+
* @example
|
22
|
+
* // Create a paginator for a user query
|
23
|
+
* const userQuery = db.select().from(User);
|
24
|
+
* const paginator = await userQuery.paginate(10); // 10 users per page
|
25
|
+
*
|
26
|
+
* // Get the first page of results
|
27
|
+
* const firstPage = await paginator.page(1);
|
28
|
+
*
|
29
|
+
* // Navigate to the next page
|
30
|
+
* const secondPage = await paginator.next();
|
31
|
+
*
|
32
|
+
* // Get information about the pagination
|
33
|
+
* console.log(`Page ${paginator.current} of ${paginator.total}, ${paginator.count} total records`);
|
34
|
+
*
|
35
|
+
* @mermaid
|
36
|
+
* sequenceDiagram
|
37
|
+
* participant Client
|
38
|
+
* participant Paginator
|
39
|
+
* participant Adapter
|
40
|
+
* participant Database
|
41
|
+
*
|
42
|
+
* Client->>Paginator: new Paginator(adapter, query, size, clazz)
|
43
|
+
* Client->>Paginator: page(1)
|
44
|
+
* Paginator->>Paginator: validatePage(1)
|
45
|
+
* Paginator->>Paginator: prepare(query)
|
46
|
+
* Paginator->>Adapter: execute query with pagination
|
47
|
+
* Adapter->>Database: execute query
|
48
|
+
* Database-->>Adapter: return results
|
49
|
+
* Adapter-->>Paginator: return results
|
50
|
+
* Paginator-->>Client: return page results
|
51
|
+
*
|
52
|
+
* Client->>Paginator: next()
|
53
|
+
* Paginator->>Paginator: page(current + 1)
|
54
|
+
* Paginator->>Paginator: validatePage(current + 1)
|
55
|
+
* Paginator->>Adapter: execute query with pagination
|
56
|
+
* Adapter->>Database: execute query
|
57
|
+
* Database-->>Adapter: return results
|
58
|
+
* Adapter-->>Paginator: return results
|
59
|
+
* Paginator-->>Client: return page results
|
60
|
+
*/
|
5
61
|
class Paginator {
|
6
62
|
get current() {
|
7
63
|
return this._currentPage;
|
@@ -38,4 +94,4 @@ class Paginator {
|
|
38
94
|
}
|
39
95
|
}
|
40
96
|
exports.Paginator = Paginator;
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFnaW5hdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3F1ZXJ5L1BhZ2luYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FBdUM7QUFJdkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1REc7QUFDSCxNQUFzQixTQUFTO0lBUTdCLElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQWMsU0FBUztRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVU7WUFBRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsWUFDcUIsT0FBa0MsRUFDbEMsS0FBUSxFQUNsQixJQUFZLEVBQ0YsS0FBcUI7UUFIckIsWUFBTyxHQUFQLE9BQU8sQ0FBMkI7UUFDbEMsVUFBSyxHQUFMLEtBQUssQ0FBRztRQUNsQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ0YsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7SUFDdkMsQ0FBQztJQUlKLEtBQUssQ0FBQyxJQUFJO1FBQ1IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRO1FBQ1osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVTLFlBQVksQ0FBQyxJQUFZO1FBQ2pDLElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxvQkFBVyxDQUNuQixzREFBc0QsQ0FDdkQsQ0FBQztRQUNKLElBQUksT0FBTyxJQUFJLENBQUMsV0FBVyxLQUFLLFdBQVcsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVc7WUFDcEUsTUFBTSxJQUFJLG9CQUFXLENBQ25CLFFBQVEsSUFBSSxDQUFDLFdBQVcscUNBQXFDLElBQUksRUFBRSxDQUNwRSxDQUFDO1FBQ0osT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBR0Y7QUF2REQsOEJBdURDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFnaW5nRXJyb3IgfSBmcm9tIFwiLi9lcnJvcnNcIjtcbmltcG9ydCB7IEFkYXB0ZXIgfSBmcm9tIFwiLi4vcGVyc2lzdGVuY2VcIjtcbmltcG9ydCB7IENvbnN0cnVjdG9yLCBNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSGFuZGxlcyBwYWdpbmF0aW9uIGZvciBkYXRhYmFzZSBxdWVyaWVzXG4gKiBAc3VtbWFyeSBQcm92aWRlcyBmdW5jdGlvbmFsaXR5IGZvciBuYXZpZ2F0aW5nIHRocm91Z2ggcGFnaW5hdGVkIHF1ZXJ5IHJlc3VsdHNcbiAqIFxuICogVGhpcyBhYnN0cmFjdCBjbGFzcyBtYW5hZ2VzIHRoZSBzdGF0ZSBhbmQgbmF2aWdhdGlvbiBvZiBwYWdpbmF0ZWQgZGF0YWJhc2UgcXVlcnkgcmVzdWx0cy5cbiAqIEl0IHRyYWNrcyB0aGUgY3VycmVudCBwYWdlLCB0b3RhbCBwYWdlcywgYW5kIHJlY29yZCBjb3VudCwgYW5kIHByb3ZpZGVzIG1ldGhvZHMgZm9yXG4gKiBtb3ZpbmcgYmV0d2VlbiBwYWdlcy5cbiAqIFxuICogQHRlbXBsYXRlIE0gLSBUaGUgbW9kZWwgdHlwZSB0aGlzIHBhZ2luYXRvciBvcGVyYXRlcyBvblxuICogQHRlbXBsYXRlIFIgLSBUaGUgcmV0dXJuIHR5cGUgb2YgdGhlIHBhZ2luYXRlZCBxdWVyeSAoZGVmYXVsdHMgdG8gTVtdKVxuICogQHRlbXBsYXRlIFEgLSBUaGUgcXVlcnkgdHlwZSAoZGVmYXVsdHMgdG8gYW55KVxuICogQHBhcmFtIHtBZGFwdGVyPGFueSwgUSwgYW55LCBhbnk+fSBhZGFwdGVyIC0gVGhlIGRhdGFiYXNlIGFkYXB0ZXIgdG8gdXNlIGZvciBleGVjdXRpbmcgcXVlcmllc1xuICogQHBhcmFtIHtRfSBxdWVyeSAtIFRoZSBxdWVyeSB0byBwYWdpbmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IHNpemUgLSBUaGUgbnVtYmVyIG9mIHJlY29yZHMgcGVyIHBhZ2VcbiAqIEBwYXJhbSB7Q29uc3RydWN0b3I8TT59IGNsYXp6IC0gVGhlIGNvbnN0cnVjdG9yIGZvciB0aGUgbW9kZWwgdHlwZVxuICogQGNsYXNzIFBhZ2luYXRvclxuICogQGV4YW1wbGVcbiAqIC8vIENyZWF0ZSBhIHBhZ2luYXRvciBmb3IgYSB1c2VyIHF1ZXJ5XG4gKiBjb25zdCB1c2VyUXVlcnkgPSBkYi5zZWxlY3QoKS5mcm9tKFVzZXIpO1xuICogY29uc3QgcGFnaW5hdG9yID0gYXdhaXQgdXNlclF1ZXJ5LnBhZ2luYXRlKDEwKTsgLy8gMTAgdXNlcnMgcGVyIHBhZ2VcbiAqIFxuICogLy8gR2V0IHRoZSBmaXJzdCBwYWdlIG9mIHJlc3VsdHNcbiAqIGNvbnN0IGZpcnN0UGFnZSA9IGF3YWl0IHBhZ2luYXRvci5wYWdlKDEpO1xuICogXG4gKiAvLyBOYXZpZ2F0ZSB0byB0aGUgbmV4dCBwYWdlXG4gKiBjb25zdCBzZWNvbmRQYWdlID0gYXdhaXQgcGFnaW5hdG9yLm5leHQoKTtcbiAqIFxuICogLy8gR2V0IGluZm9ybWF0aW9uIGFib3V0IHRoZSBwYWdpbmF0aW9uXG4gKiBjb25zb2xlLmxvZyhgUGFnZSAke3BhZ2luYXRvci5jdXJyZW50fSBvZiAke3BhZ2luYXRvci50b3RhbH0sICR7cGFnaW5hdG9yLmNvdW50fSB0b3RhbCByZWNvcmRzYCk7XG4gKiBcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgQ2xpZW50XG4gKiAgIHBhcnRpY2lwYW50IFBhZ2luYXRvclxuICogICBwYXJ0aWNpcGFudCBBZGFwdGVyXG4gKiAgIHBhcnRpY2lwYW50IERhdGFiYXNlXG4gKiAgIFxuICogICBDbGllbnQtPj5QYWdpbmF0b3I6IG5ldyBQYWdpbmF0b3IoYWRhcHRlciwgcXVlcnksIHNpemUsIGNsYXp6KVxuICogICBDbGllbnQtPj5QYWdpbmF0b3I6IHBhZ2UoMSlcbiAqICAgUGFnaW5hdG9yLT4+UGFnaW5hdG9yOiB2YWxpZGF0ZVBhZ2UoMSlcbiAqICAgUGFnaW5hdG9yLT4+UGFnaW5hdG9yOiBwcmVwYXJlKHF1ZXJ5KVxuICogICBQYWdpbmF0b3ItPj5BZGFwdGVyOiBleGVjdXRlIHF1ZXJ5IHdpdGggcGFnaW5hdGlvblxuICogICBBZGFwdGVyLT4+RGF0YWJhc2U6IGV4ZWN1dGUgcXVlcnlcbiAqICAgRGF0YWJhc2UtLT4+QWRhcHRlcjogcmV0dXJuIHJlc3VsdHNcbiAqICAgQWRhcHRlci0tPj5QYWdpbmF0b3I6IHJldHVybiByZXN1bHRzXG4gKiAgIFBhZ2luYXRvci0tPj5DbGllbnQ6IHJldHVybiBwYWdlIHJlc3VsdHNcbiAqICAgXG4gKiAgIENsaWVudC0+PlBhZ2luYXRvcjogbmV4dCgpXG4gKiAgIFBhZ2luYXRvci0+PlBhZ2luYXRvcjogcGFnZShjdXJyZW50ICsgMSlcbiAqICAgUGFnaW5hdG9yLT4+UGFnaW5hdG9yOiB2YWxpZGF0ZVBhZ2UoY3VycmVudCArIDEpXG4gKiAgIFBhZ2luYXRvci0+PkFkYXB0ZXI6IGV4ZWN1dGUgcXVlcnkgd2l0aCBwYWdpbmF0aW9uXG4gKiAgIEFkYXB0ZXItPj5EYXRhYmFzZTogZXhlY3V0ZSBxdWVyeVxuICogICBEYXRhYmFzZS0tPj5BZGFwdGVyOiByZXR1cm4gcmVzdWx0c1xuICogICBBZGFwdGVyLS0+PlBhZ2luYXRvcjogcmV0dXJuIHJlc3VsdHNcbiAqICAgUGFnaW5hdG9yLS0+PkNsaWVudDogcmV0dXJuIHBhZ2UgcmVzdWx0c1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUGFnaW5hdG9yPE0gZXh0ZW5kcyBNb2RlbCwgUiA9IE1bXSwgUSA9IGFueT4ge1xuICBwcm90ZWN0ZWQgX2N1cnJlbnRQYWdlITogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX3RvdGFsUGFnZXMhOiBudW1iZXI7XG4gIHByb3RlY3RlZCBfcmVjb3JkQ291bnQhOiBudW1iZXI7XG4gIHByb3RlY3RlZCBsaW1pdCE6IG51bWJlcjtcblxuICBwcml2YXRlIF9zdGF0ZW1lbnQ/OiBRO1xuXG4gIGdldCBjdXJyZW50KCkge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50UGFnZTtcbiAgfVxuXG4gIGdldCB0b3RhbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdG90YWxQYWdlcztcbiAgfVxuXG4gIGdldCBjb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9yZWNvcmRDb3VudDtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgc3RhdGVtZW50KCkge1xuICAgIGlmICghdGhpcy5fc3RhdGVtZW50KSB0aGlzLl9zdGF0ZW1lbnQgPSB0aGlzLnByZXBhcmUodGhpcy5xdWVyeSk7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlbWVudDtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWRhcHRlcjogQWRhcHRlcjxhbnksIFEsIGFueSwgYW55PixcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcXVlcnk6IFEsXG4gICAgcmVhZG9ubHkgc2l6ZTogbnVtYmVyLFxuICAgIHByb3RlY3RlZCByZWFkb25seSBjbGF6ejogQ29uc3RydWN0b3I8TT5cbiAgKSB7fVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBwcmVwYXJlKHJhd1N0YXRlbWVudDogUSk6IFE7XG5cbiAgYXN5bmMgbmV4dCgpIHtcbiAgICByZXR1cm4gdGhpcy5wYWdlKHRoaXMuY3VycmVudCArIDEpO1xuICB9XG5cbiAgYXN5bmMgcHJldmlvdXMoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFnZSh0aGlzLmN1cnJlbnQgLSAxKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB2YWxpZGF0ZVBhZ2UocGFnZTogbnVtYmVyKSB7XG4gICAgaWYgKHBhZ2UgPCAxIHx8ICFOdW1iZXIuaXNJbnRlZ2VyKHBhZ2UpKVxuICAgICAgdGhyb3cgbmV3IFBhZ2luZ0Vycm9yKFxuICAgICAgICBcIlBhZ2UgbnVtYmVyIGNhbm5vdCBiZSB1bmRlciAxIGFuZCBtdXN0IGJlIGFuIGludGVnZXJcIlxuICAgICAgKTtcbiAgICBpZiAodHlwZW9mIHRoaXMuX3RvdGFsUGFnZXMgIT09IFwidW5kZWZpbmVkXCIgJiYgcGFnZSA+IHRoaXMuX3RvdGFsUGFnZXMpXG4gICAgICB0aHJvdyBuZXcgUGFnaW5nRXJyb3IoXG4gICAgICAgIGBPbmx5ICR7dGhpcy5fdG90YWxQYWdlc30gYXJlIGF2YWlsYWJsZS4gQ2Fubm90IGdvIHRvIHBhZ2UgJHtwYWdlfWBcbiAgICAgICk7XG4gICAgcmV0dXJuIHBhZ2U7XG4gIH1cblxuICBhYnN0cmFjdCBwYWdlKHBhZ2U/OiBudW1iZXIpOiBQcm9taXNlPFJbXT47XG59XG4iXX0=
|
package/lib/query/Paginator.d.ts
CHANGED
@@ -1,5 +1,61 @@
|
|
1
1
|
import { Adapter } from "../persistence";
|
2
2
|
import { Constructor, Model } from "@decaf-ts/decorator-validation";
|
3
|
+
/**
|
4
|
+
* @description Handles pagination for database queries
|
5
|
+
* @summary Provides functionality for navigating through paginated query results
|
6
|
+
*
|
7
|
+
* This abstract class manages the state and navigation of paginated database query results.
|
8
|
+
* It tracks the current page, total pages, and record count, and provides methods for
|
9
|
+
* moving between pages.
|
10
|
+
*
|
11
|
+
* @template M - The model type this paginator operates on
|
12
|
+
* @template R - The return type of the paginated query (defaults to M[])
|
13
|
+
* @template Q - The query type (defaults to any)
|
14
|
+
* @param {Adapter<any, Q, any, any>} adapter - The database adapter to use for executing queries
|
15
|
+
* @param {Q} query - The query to paginate
|
16
|
+
* @param {number} size - The number of records per page
|
17
|
+
* @param {Constructor<M>} clazz - The constructor for the model type
|
18
|
+
* @class Paginator
|
19
|
+
* @example
|
20
|
+
* // Create a paginator for a user query
|
21
|
+
* const userQuery = db.select().from(User);
|
22
|
+
* const paginator = await userQuery.paginate(10); // 10 users per page
|
23
|
+
*
|
24
|
+
* // Get the first page of results
|
25
|
+
* const firstPage = await paginator.page(1);
|
26
|
+
*
|
27
|
+
* // Navigate to the next page
|
28
|
+
* const secondPage = await paginator.next();
|
29
|
+
*
|
30
|
+
* // Get information about the pagination
|
31
|
+
* console.log(`Page ${paginator.current} of ${paginator.total}, ${paginator.count} total records`);
|
32
|
+
*
|
33
|
+
* @mermaid
|
34
|
+
* sequenceDiagram
|
35
|
+
* participant Client
|
36
|
+
* participant Paginator
|
37
|
+
* participant Adapter
|
38
|
+
* participant Database
|
39
|
+
*
|
40
|
+
* Client->>Paginator: new Paginator(adapter, query, size, clazz)
|
41
|
+
* Client->>Paginator: page(1)
|
42
|
+
* Paginator->>Paginator: validatePage(1)
|
43
|
+
* Paginator->>Paginator: prepare(query)
|
44
|
+
* Paginator->>Adapter: execute query with pagination
|
45
|
+
* Adapter->>Database: execute query
|
46
|
+
* Database-->>Adapter: return results
|
47
|
+
* Adapter-->>Paginator: return results
|
48
|
+
* Paginator-->>Client: return page results
|
49
|
+
*
|
50
|
+
* Client->>Paginator: next()
|
51
|
+
* Paginator->>Paginator: page(current + 1)
|
52
|
+
* Paginator->>Paginator: validatePage(current + 1)
|
53
|
+
* Paginator->>Adapter: execute query with pagination
|
54
|
+
* Adapter->>Database: execute query
|
55
|
+
* Database-->>Adapter: return results
|
56
|
+
* Adapter-->>Paginator: return results
|
57
|
+
* Paginator-->>Client: return page results
|
58
|
+
*/
|
3
59
|
export declare abstract class Paginator<M extends Model, R = M[], Q = any> {
|
4
60
|
protected readonly adapter: Adapter<any, Q, any, any>;
|
5
61
|
protected readonly query: Q;
|
package/lib/query/Statement.cjs
CHANGED
@@ -16,6 +16,57 @@ const Condition_1 = require("./Condition.cjs");
|
|
16
16
|
const db_decorators_1 = require("@decaf-ts/db-decorators");
|
17
17
|
const decorators_1 = require("./../utils/decorators.cjs");
|
18
18
|
const errors_1 = require("./errors.cjs");
|
19
|
+
/**
|
20
|
+
* @description Base class for database query statements
|
21
|
+
* @summary Provides a foundation for building and executing database queries
|
22
|
+
*
|
23
|
+
* This abstract class implements the query builder pattern for constructing
|
24
|
+
* database queries. It supports various query operations like select, from,
|
25
|
+
* where, orderBy, groupBy, limit, and offset. It also provides methods for
|
26
|
+
* executing queries and handling pagination.
|
27
|
+
*
|
28
|
+
* @template Q - The query type specific to the database adapter
|
29
|
+
* @template M - The model type this statement operates on
|
30
|
+
* @template R - The return type of the query
|
31
|
+
* @param {Adapter<any, Q, any, any>} adapter - The database adapter to use for executing queries
|
32
|
+
* @class Statement
|
33
|
+
* @example
|
34
|
+
* // Create a statement to query users
|
35
|
+
* const statement = new SQLStatement(adapter);
|
36
|
+
* const users = await statement
|
37
|
+
* .select()
|
38
|
+
* .from(User)
|
39
|
+
* .where(Condition.attribute("status").eq("active"))
|
40
|
+
* .orderBy(["createdAt", "DESC"])
|
41
|
+
* .limit(10)
|
42
|
+
* .execute();
|
43
|
+
*
|
44
|
+
* // Use pagination
|
45
|
+
* const paginator = await statement
|
46
|
+
* .select()
|
47
|
+
* .from(User)
|
48
|
+
* .paginate(20); // 20 users per page
|
49
|
+
*
|
50
|
+
* @mermaid
|
51
|
+
* sequenceDiagram
|
52
|
+
* participant Client
|
53
|
+
* participant Statement
|
54
|
+
* participant Adapter
|
55
|
+
* participant Database
|
56
|
+
*
|
57
|
+
* Client->>Statement: select()
|
58
|
+
* Client->>Statement: from(Model)
|
59
|
+
* Client->>Statement: where(condition)
|
60
|
+
* Client->>Statement: orderBy([field, direction])
|
61
|
+
* Client->>Statement: limit(value)
|
62
|
+
* Client->>Statement: execute()
|
63
|
+
* Statement->>Statement: build()
|
64
|
+
* Statement->>Adapter: raw(query)
|
65
|
+
* Adapter->>Database: execute query
|
66
|
+
* Database-->>Adapter: return results
|
67
|
+
* Adapter-->>Statement: return processed results
|
68
|
+
* Statement-->>Client: return final results
|
69
|
+
*/
|
19
70
|
class Statement {
|
20
71
|
constructor(adapter) {
|
21
72
|
this.adapter = adapter;
|
@@ -165,4 +216,4 @@ __decorate([
|
|
165
216
|
__metadata("design:paramtypes", []),
|
166
217
|
__metadata("design:returntype", Promise)
|
167
218
|
], Statement.prototype, "execute", null);
|
168
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhdGVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3F1ZXJ5L1N0YXRlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUEseUVBQXlFO0FBUXpFLCtDQUF3QztBQUN4QywyREFBd0U7QUFDeEUsMERBQTRDO0FBZTVDLHlDQUFzQztBQUV0QyxNQUFzQixTQUFTO0lBZTdCLFlBQWdDLE9BQWtDO1FBQWxDLFlBQU8sR0FBUCxPQUFPLENBQTJCO0lBQUcsQ0FBQztJQVd0RSxNQUFNLENBQ0osUUFBMEI7UUFFMUIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7WUFDNUMsS0FBSyxFQUFFLFFBQVE7WUFDZixRQUFRLEVBQUUsS0FBSztTQUNoQixDQUFDLENBQUM7UUFDSCxPQUFPLElBQW9FLENBQUM7SUFDOUUsQ0FBQztJQUdELFFBQVEsQ0FDTixRQUFXO1FBRVgsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQztRQUNqQyxPQUFPLElBQWlDLENBQUM7SUFDM0MsQ0FBQztJQUdELEdBQUcsQ0FBOEIsUUFBVztRQUMxQyxJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQztRQUM1QixPQUFPLElBQTBCLENBQUM7SUFDcEMsQ0FBQztJQUdELEdBQUcsQ0FBOEIsUUFBVztRQUMxQyxJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQztRQUM1QixPQUFPLElBQTBCLENBQUM7SUFDcEMsQ0FBQztJQUdELEtBQUssQ0FBOEIsUUFBWTtRQUM3QyxJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQztRQUM5QixPQUFPLElBQThCLENBQUM7SUFDeEMsQ0FBQztJQUdNLElBQUksQ0FBQyxRQUF5QjtRQUNuQyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQ2xCLE9BQU8sUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsNEJBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FDNUMsQ0FBQztRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVk7WUFDcEIsTUFBTSxJQUFJLG1CQUFVLENBQUMsa0NBQWtDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDckUsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBR00sS0FBSyxDQUFDLFNBQXVCO1FBQ2xDLElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUdNLE9BQU8sQ0FDWixRQUE0QjtRQUU1QixJQUFJLENBQUMsZUFBZSxHQUFHLFFBQVEsQ0FBQztRQUNoQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFHTSxPQUFPLENBQUMsUUFBNEI7UUFDekMsSUFBSSxDQUFDLGVBQWUsR0FBRyxRQUFRLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBR00sS0FBSyxDQUFDLEtBQWE7UUFDeEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDM0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBR00sTUFBTSxDQUFDLEtBQWE7UUFDekIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBR0ssQUFBTixLQUFLLENBQUMsT0FBTztRQUNYLElBQUksQ0FBQztZQUNILE1BQU0sS0FBSyxHQUFNLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM5QixPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFNLENBQUM7UUFDdEMsQ0FBQztRQUFDLE9BQU8sQ0FBVSxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFJLDZCQUFhLENBQUMsQ0FBVSxDQUFDLENBQUM7UUFDdEMsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsR0FBRyxDQUFJLFFBQVc7UUFDdEIsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBSSxRQUFRLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWM7WUFBRSxPQUFPLE9BQU8sQ0FBQztRQUN6QyxNQUFNLE1BQU0sR0FBRyxJQUFBLDhCQUFjLEVBQzNCLElBQUssSUFBSSxDQUFDLFlBQStCLEVBQUUsQ0FDNUMsQ0FBQyxFQUFFLENBQUM7UUFFTCxNQUFNLFNBQVMsR0FBRyxTQUFTLGVBQWUsQ0FFeEMsQ0FBTTtZQUVOLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNyQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUN4QixDQUFDLEVBQ0QsSUFBSSxDQUFDLFlBQWdDLEVBQ3JDLE1BQU0sRUFDTixFQUFFLENBQ0ksQ0FBQztRQUNYLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBVyxDQUFDLENBQUM7UUFFcEIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUFFLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQU0sQ0FBQztRQUMvRCxPQUFPLFNBQVMsQ0FBQyxPQUFPLENBQU0sQ0FBQztJQUNqQyxDQUFDO0NBS0Y7QUE3SUQsOEJBNklDO0FBbkhDO0lBREMsSUFBQSxrQkFBSyxHQUFFOzs7O3VDQVNQO0FBR0Q7SUFEQyxJQUFBLGtCQUFLLEdBQUU7O3lEQUVJLENBQUMsb0JBQUQsQ0FBQzs7eUNBSVo7QUFHRDtJQURDLElBQUEsa0JBQUssR0FBRTs7eURBQ21DLENBQUMsb0JBQUQsQ0FBQzs7b0NBRzNDO0FBR0Q7SUFEQyxJQUFBLGtCQUFLLEdBQUU7O3lEQUNtQyxDQUFDLG9CQUFELENBQUM7O29DQUczQztBQUdEO0lBREMsSUFBQSxrQkFBSyxHQUFFOzt5REFDc0MsQ0FBQyxvQkFBRCxDQUFDOztzQ0FHOUM7QUFHTTtJQUROLElBQUEsa0JBQUssR0FBRTs7OztxQ0FRUDtBQUdNO0lBRE4sSUFBQSxrQkFBSyxHQUFFOztxQ0FDZ0IscUJBQVM7O3NDQUdoQztBQUdNO0lBRE4sSUFBQSxrQkFBSyxHQUFFOzs7O3dDQU1QO0FBR007SUFETixJQUFBLGtCQUFLLEdBQUU7Ozs7d0NBSVA7QUFHTTtJQUROLElBQUEsa0JBQUssR0FBRTs7OztzQ0FJUDtBQUdNO0lBRE4sSUFBQSxrQkFBSyxHQUFFOzs7O3VDQUlQO0FBR0s7SUFETCxJQUFBLGtCQUFLLEdBQUU7Ozs7d0NBUVAiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIENvbnN0cnVjdG9yLCBNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB0eXBlIHsgRXhlY3V0b3IsIFJhd0V4ZWN1dG9yIH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcbmltcG9ydCB0eXBlIHtcbiAgRnJvbVNlbGVjdG9yLFxuICBHcm91cEJ5U2VsZWN0b3IsXG4gIE9yZGVyQnlTZWxlY3RvcixcbiAgU2VsZWN0U2VsZWN0b3IsXG59IGZyb20gXCIuL3NlbGVjdG9yc1wiO1xuaW1wb3J0IHsgQ29uZGl0aW9uIH0gZnJvbSBcIi4vQ29uZGl0aW9uXCI7XG5pbXBvcnQgeyBmaW5kUHJpbWFyeUtleSwgSW50ZXJuYWxFcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgZmluYWwgfSBmcm9tIFwiLi4vdXRpbHMvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHR5cGUge1xuICBDb3VudE9wdGlvbixcbiAgRGlzdGluY3RPcHRpb24sXG4gIExpbWl0T3B0aW9uLFxuICBNYXhPcHRpb24sXG4gIE1pbk9wdGlvbixcbiAgT2Zmc2V0T3B0aW9uLFxuICBPcmRlckFuZEdyb3VwT3B0aW9uLFxuICBTZWxlY3RPcHRpb24sXG4gIFdoZXJlT3B0aW9uLFxufSBmcm9tIFwiLi9vcHRpb25zXCI7XG5pbXBvcnQgeyBQYWdpbmF0YWJsZSB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL1BhZ2luYXRhYmxlXCI7XG5pbXBvcnQgeyBQYWdpbmF0b3IgfSBmcm9tIFwiLi9QYWdpbmF0b3JcIjtcbmltcG9ydCB7IEFkYXB0ZXIgfSBmcm9tIFwiLi4vcGVyc2lzdGVuY2VcIjtcbmltcG9ydCB7IFF1ZXJ5RXJyb3IgfSBmcm9tIFwiLi9lcnJvcnNcIjtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFN0YXRlbWVudDxRLCBNIGV4dGVuZHMgTW9kZWwsIFI+XG4gIGltcGxlbWVudHMgRXhlY3V0b3I8Uj4sIFJhd0V4ZWN1dG9yPFE+LCBQYWdpbmF0YWJsZTxNLCBSLCBRPlxue1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VsZWN0U2VsZWN0b3I/OiBTZWxlY3RTZWxlY3RvcjxNPltdO1xuICBwcm90ZWN0ZWQgZGlzdGluY3RTZWxlY3Rvcj86IFNlbGVjdFNlbGVjdG9yPE0+O1xuICBwcm90ZWN0ZWQgbWF4U2VsZWN0b3I/OiBTZWxlY3RTZWxlY3RvcjxNPjtcbiAgcHJvdGVjdGVkIG1pblNlbGVjdG9yPzogU2VsZWN0U2VsZWN0b3I8TT47XG4gIHByb3RlY3RlZCBjb3VudFNlbGVjdG9yPzogU2VsZWN0U2VsZWN0b3I8TT47XG4gIHByb3RlY3RlZCBmcm9tU2VsZWN0b3IhOiBDb25zdHJ1Y3RvcjxNPjtcbiAgcHJvdGVjdGVkIHdoZXJlQ29uZGl0aW9uPzogQ29uZGl0aW9uPE0+O1xuICBwcm90ZWN0ZWQgb3JkZXJCeVNlbGVjdG9yPzogT3JkZXJCeVNlbGVjdG9yPE0+O1xuICBwcm90ZWN0ZWQgZ3JvdXBCeVNlbGVjdG9yPzogR3JvdXBCeVNlbGVjdG9yPE0+O1xuICBwcm90ZWN0ZWQgbGltaXRTZWxlY3Rvcj86IG51bWJlcjtcbiAgcHJvdGVjdGVkIG9mZnNldFNlbGVjdG9yPzogbnVtYmVyO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgYWRhcHRlcjogQWRhcHRlcjxhbnksIFEsIGFueSwgYW55Pikge31cblxuICBzZWxlY3Q8XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIFMgZXh0ZW5kcyByZWFkb25seSBTZWxlY3RTZWxlY3RvcjxNPltdLFxuICA+KCk6IFNlbGVjdE9wdGlvbjxNLCBNW10+O1xuICBzZWxlY3Q8UyBleHRlbmRzIHJlYWRvbmx5IFNlbGVjdFNlbGVjdG9yPE0+W10+KFxuICAgIHNlbGVjdG9yOiByZWFkb25seSBbLi4uU11cbiAgKTogU2VsZWN0T3B0aW9uPE0sIFBpY2s8TSwgU1tudW1iZXJdPltdPjtcblxuICBAZmluYWwoKVxuICBzZWxlY3Q8UyBleHRlbmRzIHJlYWRvbmx5IFNlbGVjdFNlbGVjdG9yPE0+W10+KFxuICAgIHNlbGVjdG9yPzogcmVhZG9ubHkgWy4uLlNdXG4gICk6IFNlbGVjdE9wdGlvbjxNLCBNW10+IHwgU2VsZWN0T3B0aW9uPE0sIFBpY2s8TSwgU1tudW1iZXJdPltdPiB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIFwic2VsZWN0U2VsZWN0b3JcIiwge1xuICAgICAgdmFsdWU6IHNlbGVjdG9yLFxuICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzIGFzIFNlbGVjdE9wdGlvbjxNLCBNW10+IHwgU2VsZWN0T3B0aW9uPE0sIFBpY2s8TSwgU1tudW1iZXJdPltdPjtcbiAgfVxuXG4gIEBmaW5hbCgpXG4gIGRpc3RpbmN0PFMgZXh0ZW5kcyBTZWxlY3RTZWxlY3RvcjxNPj4oXG4gICAgc2VsZWN0b3I6IFNcbiAgKTogRGlzdGluY3RPcHRpb248TSwgTVtTXVtdPiB7XG4gICAgdGhpcy5kaXN0aW5jdFNlbGVjdG9yID0gc2VsZWN0b3I7XG4gICAgcmV0dXJuIHRoaXMgYXMgRGlzdGluY3RPcHRpb248TSwgTVtTXVtdPjtcbiAgfVxuXG4gIEBmaW5hbCgpXG4gIG1heDxTIGV4dGVuZHMgU2VsZWN0U2VsZWN0b3I8TT4+KHNlbGVjdG9yOiBTKTogTWF4T3B0aW9uPE0sIE1bU10+IHtcbiAgICB0aGlzLm1heFNlbGVjdG9yID0gc2VsZWN0b3I7XG4gICAgcmV0dXJuIHRoaXMgYXMgTWF4T3B0aW9uPE0sIE1bU10+O1xuICB9XG5cbiAgQGZpbmFsKClcbiAgbWluPFMgZXh0ZW5kcyBTZWxlY3RTZWxlY3RvcjxNPj4oc2VsZWN0b3I6IFMpOiBNaW5PcHRpb248TSwgTVtTXT4ge1xuICAgIHRoaXMubWluU2VsZWN0b3IgPSBzZWxlY3RvcjtcbiAgICByZXR1cm4gdGhpcyBhcyBNaW5PcHRpb248TSwgTVtTXT47XG4gIH1cblxuICBAZmluYWwoKVxuICBjb3VudDxTIGV4dGVuZHMgU2VsZWN0U2VsZWN0b3I8TT4+KHNlbGVjdG9yPzogUyk6IENvdW50T3B0aW9uPE0sIG51bWJlcj4ge1xuICAgIHRoaXMuY291bnRTZWxlY3RvciA9IHNlbGVjdG9yO1xuICAgIHJldHVybiB0aGlzIGFzIENvdW50T3B0aW9uPE0sIG51bWJlcj47XG4gIH1cblxuICBAZmluYWwoKVxuICBwdWJsaWMgZnJvbShzZWxlY3RvcjogRnJvbVNlbGVjdG9yPE0+KTogV2hlcmVPcHRpb248TSwgUj4ge1xuICAgIHRoaXMuZnJvbVNlbGVjdG9yID0gKFxuICAgICAgdHlwZW9mIHNlbGVjdG9yID09PSBcInN0cmluZ1wiID8gTW9kZWwuZ2V0KHNlbGVjdG9yKSA6IHNlbGVjdG9yXG4gICAgKSBhcyBDb25zdHJ1Y3RvcjxNPjtcbiAgICBpZiAoIXRoaXMuZnJvbVNlbGVjdG9yKVxuICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoYENvdWxkIG5vdCBmaW5kIHNlbGVjdG9yIG1vZGVsOiAke3NlbGVjdG9yfWApO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgQGZpbmFsKClcbiAgcHVibGljIHdoZXJlKGNvbmRpdGlvbjogQ29uZGl0aW9uPE0+KTogT3JkZXJBbmRHcm91cE9wdGlvbjxNLCBSPiB7XG4gICAgdGhpcy53aGVyZUNvbmRpdGlvbiA9IGNvbmRpdGlvbjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIEBmaW5hbCgpXG4gIHB1YmxpYyBvcmRlckJ5KFxuICAgIHNlbGVjdG9yOiBPcmRlckJ5U2VsZWN0b3I8TT5cbiAgKTogTGltaXRPcHRpb248TSwgUj4gJiBPZmZzZXRPcHRpb248Uj4ge1xuICAgIHRoaXMub3JkZXJCeVNlbGVjdG9yID0gc2VsZWN0b3I7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBAZmluYWwoKVxuICBwdWJsaWMgZ3JvdXBCeShzZWxlY3RvcjogR3JvdXBCeVNlbGVjdG9yPE0+KTogTGltaXRPcHRpb248TSwgUj4ge1xuICAgIHRoaXMuZ3JvdXBCeVNlbGVjdG9yID0gc2VsZWN0b3I7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBAZmluYWwoKVxuICBwdWJsaWMgbGltaXQodmFsdWU6IG51bWJlcik6IE9mZnNldE9wdGlvbjxSPiB7XG4gICAgdGhpcy5saW1pdFNlbGVjdG9yID0gdmFsdWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBAZmluYWwoKVxuICBwdWJsaWMgb2Zmc2V0KHZhbHVlOiBudW1iZXIpOiBFeGVjdXRvcjxSPiB7XG4gICAgdGhpcy5vZmZzZXRTZWxlY3RvciA9IHZhbHVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgQGZpbmFsKClcbiAgYXN5bmMgZXhlY3V0ZSgpOiBQcm9taXNlPFI+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcXVlcnk6IFEgPSB0aGlzLmJ1aWxkKCk7XG4gICAgICByZXR1cm4gKGF3YWl0IHRoaXMucmF3KHF1ZXJ5KSkgYXMgUjtcbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihlIGFzIEVycm9yKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyByYXc8Uj4ocmF3SW5wdXQ6IFEpOiBQcm9taXNlPFI+IHtcbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgdGhpcy5hZGFwdGVyLnJhdzxSPihyYXdJbnB1dCk7XG4gICAgaWYgKCF0aGlzLnNlbGVjdFNlbGVjdG9yKSByZXR1cm4gcmVzdWx0cztcbiAgICBjb25zdCBwa0F0dHIgPSBmaW5kUHJpbWFyeUtleShcbiAgICAgIG5ldyAodGhpcy5mcm9tU2VsZWN0b3IgYXMgQ29uc3RydWN0b3I8TT4pKClcbiAgICApLmlkO1xuXG4gICAgY29uc3QgcHJvY2Vzc29yID0gZnVuY3Rpb24gcmVjb3JkUHJvY2Vzc29yKFxuICAgICAgdGhpczogU3RhdGVtZW50PFEsIE0sIFI+LFxuICAgICAgcjogYW55XG4gICAgKSB7XG4gICAgICBjb25zdCBpZCA9IHJbcGtBdHRyXTtcbiAgICAgIHJldHVybiB0aGlzLmFkYXB0ZXIucmV2ZXJ0KFxuICAgICAgICByLFxuICAgICAgICB0aGlzLmZyb21TZWxlY3RvciBhcyBDb25zdHJ1Y3Rvcjxhbnk+LFxuICAgICAgICBwa0F0dHIsXG4gICAgICAgIGlkXG4gICAgICApIGFzIGFueTtcbiAgICB9LmJpbmQodGhpcyBhcyBhbnkpO1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0cykpIHJldHVybiByZXN1bHRzLm1hcChwcm9jZXNzb3IpIGFzIFI7XG4gICAgcmV0dXJuIHByb2Nlc3NvcihyZXN1bHRzKSBhcyBSO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGJ1aWxkKCk6IFE7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBwYXJzZUNvbmRpdGlvbihjb25kaXRpb246IENvbmRpdGlvbjxNPik6IFE7XG4gIGFic3RyYWN0IHBhZ2luYXRlKHNpemU6IG51bWJlcik6IFByb21pc2U8UGFnaW5hdG9yPE0sIFIsIFE+Pjtcbn1cbiJdfQ==
|
219
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhdGVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3F1ZXJ5L1N0YXRlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUEseUVBQXlFO0FBUXpFLCtDQUF3QztBQUN4QywyREFBd0U7QUFDeEUsMERBQTRDO0FBZTVDLHlDQUFzQztBQUV0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrREc7QUFDSCxNQUFzQixTQUFTO0lBZTdCLFlBQWdDLE9BQWtDO1FBQWxDLFlBQU8sR0FBUCxPQUFPLENBQTJCO0lBQUcsQ0FBQztJQVd0RSxNQUFNLENBQ0osUUFBMEI7UUFFMUIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7WUFDNUMsS0FBSyxFQUFFLFFBQVE7WUFDZixRQUFRLEVBQUUsS0FBSztTQUNoQixDQUFDLENBQUM7UUFDSCxPQUFPLElBQW9FLENBQUM7SUFDOUUsQ0FBQztJQUdELFFBQVEsQ0FDTixRQUFXO1FBRVgsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQztRQUNqQyxPQUFPLElBQWlDLENBQUM7SUFDM0MsQ0FBQztJQUdELEdBQUcsQ0FBOEIsUUFBVztRQUMxQyxJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQztRQUM1QixPQUFPLElBQTBCLENBQUM7SUFDcEMsQ0FBQztJQUdELEdBQUcsQ0FBOEIsUUFBVztRQUMxQyxJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQztRQUM1QixPQUFPLElBQTBCLENBQUM7SUFDcEMsQ0FBQztJQUdELEtBQUssQ0FBOEIsUUFBWTtRQUM3QyxJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQztRQUM5QixPQUFPLElBQThCLENBQUM7SUFDeEMsQ0FBQztJQUdNLElBQUksQ0FBQyxRQUF5QjtRQUNuQyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQ2xCLE9B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OztxQ0FRUDtBQUdNO0lBRE4sSUFBQSxrQkFBSyxHQUFFOztxQ0FDZ0IscUJBQVM7O3NDQUdoQztBQUdNO0lBRE4sSUFBQSxrQkFBSyxHQUFFOzs7O3dDQU1QO0FBR007SUFETixJQUFBLGtCQUFLLEdBQUU7Ozs7d0NBSVA7QUFHTTtJQUROLElBQUEsa0JBQUssR0FBRTs7OztzQ0FJUDtBQUdNO0lBRE4sSUFBQSxrQkFBSyxHQUFFOzs7O3VDQUlQO0FBR0s7SUFETCxJQUFBLGtCQUFLLEdBQUU7Ozs7d0NBUVAiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIENvbnN0cnVjdG9yLCBNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB0eXBlIHsgRXhlY3V0b3IsIFJhd0V4ZWN1dG9yIH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcbmltcG9ydCB0eXBlIHtcbiAgRnJvbVNlbGVjdG9yLFxuICBHcm91cEJ5U2VsZWN0b3IsXG4gIE9yZGVyQnlTZWxlY3RvcixcbiAgU2VsZWN0U2VsZWN0b3IsXG59IGZyb20gXCIuL3NlbGVjdG9yc1wiO1xuaW1wb3J0IHsgQ29uZGl0aW9uIH0gZnJvbSBcIi4vQ29uZGl0aW9uXCI7XG5pbXBvcnQgeyBmaW5kUHJpbWFyeUtleSwgSW50ZXJuYWxFcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgZmluYWwgfSBmcm9tIFwiLi4vdXRpbHMvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHR5cGUge1xuICBDb3VudE9wdGlvbixcbiAgRGlzdGluY3RPcHRpb24sXG4gIExpbWl0T3B0aW9uLFxuICBNYXhPcHRpb24sXG4gIE1pbk9wdGlvbixcbiAgT2Zmc2V0T3B0aW9uLFxuICBPcmRlckFuZEdyb3VwT3B0aW9uLFxuICBTZWxlY3RPcHRpb24sXG4gIFdoZXJlT3B0aW9uLFxufSBmcm9tIFwiLi9vcHRpb25zXCI7XG5pbXBvcnQgeyBQYWdpbmF0YWJsZSB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL1BhZ2luYXRhYmxlXCI7XG5pbXBvcnQgeyBQYWdpbmF0b3IgfSBmcm9tIFwiLi9QYWdpbmF0b3JcIjtcbmltcG9ydCB7IEFkYXB0ZXIgfSBmcm9tIFwiLi4vcGVyc2lzdGVuY2VcIjtcbmltcG9ydCB7IFF1ZXJ5RXJyb3IgfSBmcm9tIFwiLi9lcnJvcnNcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQmFzZSBjbGFzcyBmb3IgZGF0YWJhc2UgcXVlcnkgc3RhdGVtZW50c1xuICogQHN1bW1hcnkgUHJvdmlkZXMgYSBmb3VuZGF0aW9uIGZvciBidWlsZGluZyBhbmQgZXhlY3V0aW5nIGRhdGFiYXNlIHF1ZXJpZXNcbiAqIFxuICogVGhpcyBhYnN0cmFjdCBjbGFzcyBpbXBsZW1lbnRzIHRoZSBxdWVyeSBidWlsZGVyIHBhdHRlcm4gZm9yIGNvbnN0cnVjdGluZ1xuICogZGF0YWJhc2UgcXVlcmllcy4gSXQgc3VwcG9ydHMgdmFyaW91cyBxdWVyeSBvcGVyYXRpb25zIGxpa2Ugc2VsZWN0LCBmcm9tLFxuICogd2hlcmUsIG9yZGVyQnksIGdyb3VwQnksIGxpbWl0LCBhbmQgb2Zmc2V0LiBJdCBhbHNvIHByb3ZpZGVzIG1ldGhvZHMgZm9yXG4gKiBleGVjdXRpbmcgcXVlcmllcyBhbmQgaGFuZGxpbmcgcGFnaW5hdGlvbi5cbiAqIFxuICogQHRlbXBsYXRlIFEgLSBUaGUgcXVlcnkgdHlwZSBzcGVjaWZpYyB0byB0aGUgZGF0YWJhc2UgYWRhcHRlclxuICogQHRlbXBsYXRlIE0gLSBUaGUgbW9kZWwgdHlwZSB0aGlzIHN0YXRlbWVudCBvcGVyYXRlcyBvblxuICogQHRlbXBsYXRlIFIgLSBUaGUgcmV0dXJuIHR5cGUgb2YgdGhlIHF1ZXJ5XG4gKiBAcGFyYW0ge0FkYXB0ZXI8YW55LCBRLCBhbnksIGFueT59IGFkYXB0ZXIgLSBUaGUgZGF0YWJhc2UgYWRhcHRlciB0byB1c2UgZm9yIGV4ZWN1dGluZyBxdWVyaWVzXG4gKiBAY2xhc3MgU3RhdGVtZW50XG4gKiBAZXhhbXBsZVxuICogLy8gQ3JlYXRlIGEgc3RhdGVtZW50IHRvIHF1ZXJ5IHVzZXJzXG4gKiBjb25zdCBzdGF0ZW1lbnQgPSBuZXcgU1FMU3RhdGVtZW50KGFkYXB0ZXIpO1xuICogY29uc3QgdXNlcnMgPSBhd2FpdCBzdGF0ZW1lbnRcbiAqICAgLnNlbGVjdCgpXG4gKiAgIC5mcm9tKFVzZXIpXG4gKiAgIC53aGVyZShDb25kaXRpb24uYXR0cmlidXRlKFwic3RhdHVzXCIpLmVxKFwiYWN0aXZlXCIpKVxuICogICAub3JkZXJCeShbXCJjcmVhdGVkQXRcIiwgXCJERVNDXCJdKVxuICogICAubGltaXQoMTApXG4gKiAgIC5leGVjdXRlKCk7XG4gKiBcbiAqIC8vIFVzZSBwYWdpbmF0aW9uXG4gKiBjb25zdCBwYWdpbmF0b3IgPSBhd2FpdCBzdGF0ZW1lbnRcbiAqICAgLnNlbGVjdCgpXG4gKiAgIC5mcm9tKFVzZXIpXG4gKiAgIC5wYWdpbmF0ZSgyMCk7IC8vIDIwIHVzZXJzIHBlciBwYWdlXG4gKiBcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgQ2xpZW50XG4gKiAgIHBhcnRpY2lwYW50IFN0YXRlbWVudFxuICogICBwYXJ0aWNpcGFudCBBZGFwdGVyXG4gKiAgIHBhcnRpY2lwYW50IERhdGFiYXNlXG4gKiAgIFxuICogICBDbGllbnQtPj5TdGF0ZW1lbnQ6IHNlbGVjdCgpXG4gKiAgIENsaWVudC0+PlN0YXRlbWVudDogZnJvbShNb2RlbClcbiAqICAgQ2xpZW50LT4+U3RhdGVtZW50OiB3aGVyZShjb25kaXRpb24pXG4gKiAgIENsaWVudC0+PlN0YXRlbWVudDogb3JkZXJCeShbZmllbGQsIGRpcmVjdGlvbl0pXG4gKiAgIENsaWVudC0+PlN0YXRlbWVudDogbGltaXQodmFsdWUpXG4gKiAgIENsaWVudC0+PlN0YXRlbWVudDogZXhlY3V0ZSgpXG4gKiAgIFN0YXRlbWVudC0+PlN0YXRlbWVudDogYnVpbGQoKVxuICogICBTdGF0ZW1lbnQtPj5BZGFwdGVyOiByYXcocXVlcnkpXG4gKiAgIEFkYXB0ZXItPj5EYXRhYmFzZTogZXhlY3V0ZSBxdWVyeVxuICogICBEYXRhYmFzZS0tPj5BZGFwdGVyOiByZXR1cm4gcmVzdWx0c1xuICogICBBZGFwdGVyLS0+PlN0YXRlbWVudDogcmV0dXJuIHByb2Nlc3NlZCByZXN1bHRzXG4gKiAgIFN0YXRlbWVudC0tPj5DbGllbnQ6IHJldHVybiBmaW5hbCByZXN1bHRzXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTdGF0ZW1lbnQ8USwgTSBleHRlbmRzIE1vZGVsLCBSPlxuICBpbXBsZW1lbnRzIEV4ZWN1dG9yPFI+LCBSYXdFeGVjdXRvcjxRPiwgUGFnaW5hdGFibGU8TSwgUiwgUT5cbntcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNlbGVjdFNlbGVjdG9yPzogU2VsZWN0U2VsZWN0b3I8TT5bXTtcbiAgcHJvdGVjdGVkIGRpc3RpbmN0U2VsZWN0b3I/OiBTZWxlY3RTZWxlY3RvcjxNPjtcbiAgcHJvdGVjdGVkIG1heFNlbGVjdG9yPzogU2VsZWN0U2VsZWN0b3I8TT47XG4gIHByb3RlY3RlZCBtaW5TZWxlY3Rvcj86IFNlbGVjdFNlbGVjdG9yPE0+O1xuICBwcm90ZWN0ZWQgY291bnRTZWxlY3Rvcj86IFNlbGVjdFNlbGVjdG9yPE0+O1xuICBwcm90ZWN0ZWQgZnJvbVNlbGVjdG9yITogQ29uc3RydWN0b3I8TT47XG4gIHByb3RlY3RlZCB3aGVyZUNvbmRpdGlvbj86IENvbmRpdGlvbjxNPjtcbiAgcHJvdGVjdGVkIG9yZGVyQnlTZWxlY3Rvcj86IE9yZGVyQnlTZWxlY3RvcjxNPjtcbiAgcHJvdGVjdGVkIGdyb3VwQnlTZWxlY3Rvcj86IEdyb3VwQnlTZWxlY3RvcjxNPjtcbiAgcHJvdGVjdGVkIGxpbWl0U2VsZWN0b3I/OiBudW1iZXI7XG4gIHByb3RlY3RlZCBvZmZzZXRTZWxlY3Rvcj86IG51bWJlcjtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IocHJvdGVjdGVkIGFkYXB0ZXI6IEFkYXB0ZXI8YW55LCBRLCBhbnksIGFueT4pIHt9XG5cbiAgc2VsZWN0PFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBTIGV4dGVuZHMgcmVhZG9ubHkgU2VsZWN0U2VsZWN0b3I8TT5bXSxcbiAgPigpOiBTZWxlY3RPcHRpb248TSwgTVtdPjtcbiAgc2VsZWN0PFMgZXh0ZW5kcyByZWFkb25seSBTZWxlY3RTZWxlY3RvcjxNPltdPihcbiAgICBzZWxlY3RvcjogcmVhZG9ubHkgWy4uLlNdXG4gICk6IFNlbGVjdE9wdGlvbjxNLCBQaWNrPE0sIFNbbnVtYmVyXT5bXT47XG5cbiAgQGZpbmFsKClcbiAgc2VsZWN0PFMgZXh0ZW5kcyByZWFkb25seSBTZWxlY3RTZWxlY3RvcjxNPltdPihcbiAgICBzZWxlY3Rvcj86IHJlYWRvbmx5IFsuLi5TXVxuICApOiBTZWxlY3RPcHRpb248TSwgTVtdPiB8IFNlbGVjdE9wdGlvbjxNLCBQaWNrPE0sIFNbbnVtYmVyXT5bXT4ge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBcInNlbGVjdFNlbGVjdG9yXCIsIHtcbiAgICAgIHZhbHVlOiBzZWxlY3RvcixcbiAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcyBhcyBTZWxlY3RPcHRpb248TSwgTVtdPiB8IFNlbGVjdE9wdGlvbjxNLCBQaWNrPE0sIFNbbnVtYmVyXT5bXT47XG4gIH1cblxuICBAZmluYWwoKVxuICBkaXN0aW5jdDxTIGV4dGVuZHMgU2VsZWN0U2VsZWN0b3I8TT4+KFxuICAgIHNlbGVjdG9yOiBTXG4gICk6IERpc3RpbmN0T3B0aW9uPE0sIE1bU11bXT4ge1xuICAgIHRoaXMuZGlzdGluY3RTZWxlY3RvciA9IHNlbGVjdG9yO1xuICAgIHJldHVybiB0aGlzIGFzIERpc3RpbmN0T3B0aW9uPE0sIE1bU11bXT47XG4gIH1cblxuICBAZmluYWwoKVxuICBtYXg8UyBleHRlbmRzIFNlbGVjdFNlbGVjdG9yPE0+PihzZWxlY3RvcjogUyk6IE1heE9wdGlvbjxNLCBNW1NdPiB7XG4gICAgdGhpcy5tYXhTZWxlY3RvciA9IHNlbGVjdG9yO1xuICAgIHJldHVybiB0aGlzIGFzIE1heE9wdGlvbjxNLCBNW1NdPjtcbiAgfVxuXG4gIEBmaW5hbCgpXG4gIG1pbjxTIGV4dGVuZHMgU2VsZWN0U2VsZWN0b3I8TT4+KHNlbGVjdG9yOiBTKTogTWluT3B0aW9uPE0sIE1bU10+IHtcbiAgICB0aGlzLm1pblNlbGVjdG9yID0gc2VsZWN0b3I7XG4gICAgcmV0dXJuIHRoaXMgYXMgTWluT3B0aW9uPE0sIE1bU10+O1xuICB9XG5cbiAgQGZpbmFsKClcbiAgY291bnQ8UyBleHRlbmRzIFNlbGVjdFNlbGVjdG9yPE0+PihzZWxlY3Rvcj86IFMpOiBDb3VudE9wdGlvbjxNLCBudW1iZXI+IHtcbiAgICB0aGlzLmNvdW50U2VsZWN0b3IgPSBzZWxlY3RvcjtcbiAgICByZXR1cm4gdGhpcyBhcyBDb3VudE9wdGlvbjxNLCBudW1iZXI+O1xuICB9XG5cbiAgQGZpbmFsKClcbiAgcHVibGljIGZyb20oc2VsZWN0b3I6IEZyb21TZWxlY3RvcjxNPik6IFdoZXJlT3B0aW9uPE0sIFI+IHtcbiAgICB0aGlzLmZyb21TZWxlY3RvciA9IChcbiAgICAgIHR5cGVvZiBzZWxlY3RvciA9PT0gXCJzdHJpbmdcIiA/IE1vZGVsLmdldChzZWxlY3RvcikgOiBzZWxlY3RvclxuICAgICkgYXMgQ29uc3RydWN0b3I8TT47XG4gICAgaWYgKCF0aGlzLmZyb21TZWxlY3RvcilcbiAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKGBDb3VsZCBub3QgZmluZCBzZWxlY3RvciBtb2RlbDogJHtzZWxlY3Rvcn1gKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIEBmaW5hbCgpXG4gIHB1YmxpYyB3aGVyZShjb25kaXRpb246IENvbmRpdGlvbjxNPik6IE9yZGVyQW5kR3JvdXBPcHRpb248TSwgUj4ge1xuICAgIHRoaXMud2hlcmVDb25kaXRpb24gPSBjb25kaXRpb247XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBAZmluYWwoKVxuICBwdWJsaWMgb3JkZXJCeShcbiAgICBzZWxlY3RvcjogT3JkZXJCeVNlbGVjdG9yPE0+XG4gICk6IExpbWl0T3B0aW9uPE0sIFI+ICYgT2Zmc2V0T3B0aW9uPFI+IHtcbiAgICB0aGlzLm9yZGVyQnlTZWxlY3RvciA9IHNlbGVjdG9yO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgQGZpbmFsKClcbiAgcHVibGljIGdyb3VwQnkoc2VsZWN0b3I6IEdyb3VwQnlTZWxlY3RvcjxNPik6IExpbWl0T3B0aW9uPE0sIFI+IHtcbiAgICB0aGlzLmdyb3VwQnlTZWxlY3RvciA9IHNlbGVjdG9yO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgQGZpbmFsKClcbiAgcHVibGljIGxpbWl0KHZhbHVlOiBudW1iZXIpOiBPZmZzZXRPcHRpb248Uj4ge1xuICAgIHRoaXMubGltaXRTZWxlY3RvciA9IHZhbHVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgQGZpbmFsKClcbiAgcHVibGljIG9mZnNldCh2YWx1ZTogbnVtYmVyKTogRXhlY3V0b3I8Uj4ge1xuICAgIHRoaXMub2Zmc2V0U2VsZWN0b3IgPSB2YWx1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIEBmaW5hbCgpXG4gIGFzeW5jIGV4ZWN1dGUoKTogUHJvbWlzZTxSPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHF1ZXJ5OiBRID0gdGhpcy5idWlsZCgpO1xuICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLnJhdyhxdWVyeSkpIGFzIFI7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoZSBhcyBFcnJvcik7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcmF3PFI+KHJhd0lucHV0OiBRKTogUHJvbWlzZTxSPiB7XG4gICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IHRoaXMuYWRhcHRlci5yYXc8Uj4ocmF3SW5wdXQpO1xuICAgIGlmICghdGhpcy5zZWxlY3RTZWxlY3RvcikgcmV0dXJuIHJlc3VsdHM7XG4gICAgY29uc3QgcGtBdHRyID0gZmluZFByaW1hcnlLZXkoXG4gICAgICBuZXcgKHRoaXMuZnJvbVNlbGVjdG9yIGFzIENvbnN0cnVjdG9yPE0+KSgpXG4gICAgKS5pZDtcblxuICAgIGNvbnN0IHByb2Nlc3NvciA9IGZ1bmN0aW9uIHJlY29yZFByb2Nlc3NvcihcbiAgICAgIHRoaXM6IFN0YXRlbWVudDxRLCBNLCBSPixcbiAgICAgIHI6IGFueVxuICAgICkge1xuICAgICAgY29uc3QgaWQgPSByW3BrQXR0cl07XG4gICAgICByZXR1cm4gdGhpcy5hZGFwdGVyLnJldmVydChcbiAgICAgICAgcixcbiAgICAgICAgdGhpcy5mcm9tU2VsZWN0b3IgYXMgQ29uc3RydWN0b3I8YW55PixcbiAgICAgICAgcGtBdHRyLFxuICAgICAgICBpZFxuICAgICAgKSBhcyBhbnk7XG4gICAgfS5iaW5kKHRoaXMgYXMgYW55KTtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdHMpKSByZXR1cm4gcmVzdWx0cy5tYXAocHJvY2Vzc29yKSBhcyBSO1xuICAgIHJldHVybiBwcm9jZXNzb3IocmVzdWx0cykgYXMgUjtcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBidWlsZCgpOiBRO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcGFyc2VDb25kaXRpb24oY29uZGl0aW9uOiBDb25kaXRpb248TT4pOiBRO1xuICBhYnN0cmFjdCBwYWdpbmF0ZShzaXplOiBudW1iZXIpOiBQcm9taXNlPFBhZ2luYXRvcjxNLCBSLCBRPj47XG59XG4iXX0=
|
package/lib/query/Statement.d.ts
CHANGED
@@ -6,6 +6,57 @@ import type { CountOption, DistinctOption, LimitOption, MaxOption, MinOption, Of
|
|
6
6
|
import { Paginatable } from "../interfaces/Paginatable";
|
7
7
|
import { Paginator } from "./Paginator";
|
8
8
|
import { Adapter } from "../persistence";
|
9
|
+
/**
|
10
|
+
* @description Base class for database query statements
|
11
|
+
* @summary Provides a foundation for building and executing database queries
|
12
|
+
*
|
13
|
+
* This abstract class implements the query builder pattern for constructing
|
14
|
+
* database queries. It supports various query operations like select, from,
|
15
|
+
* where, orderBy, groupBy, limit, and offset. It also provides methods for
|
16
|
+
* executing queries and handling pagination.
|
17
|
+
*
|
18
|
+
* @template Q - The query type specific to the database adapter
|
19
|
+
* @template M - The model type this statement operates on
|
20
|
+
* @template R - The return type of the query
|
21
|
+
* @param {Adapter<any, Q, any, any>} adapter - The database adapter to use for executing queries
|
22
|
+
* @class Statement
|
23
|
+
* @example
|
24
|
+
* // Create a statement to query users
|
25
|
+
* const statement = new SQLStatement(adapter);
|
26
|
+
* const users = await statement
|
27
|
+
* .select()
|
28
|
+
* .from(User)
|
29
|
+
* .where(Condition.attribute("status").eq("active"))
|
30
|
+
* .orderBy(["createdAt", "DESC"])
|
31
|
+
* .limit(10)
|
32
|
+
* .execute();
|
33
|
+
*
|
34
|
+
* // Use pagination
|
35
|
+
* const paginator = await statement
|
36
|
+
* .select()
|
37
|
+
* .from(User)
|
38
|
+
* .paginate(20); // 20 users per page
|
39
|
+
*
|
40
|
+
* @mermaid
|
41
|
+
* sequenceDiagram
|
42
|
+
* participant Client
|
43
|
+
* participant Statement
|
44
|
+
* participant Adapter
|
45
|
+
* participant Database
|
46
|
+
*
|
47
|
+
* Client->>Statement: select()
|
48
|
+
* Client->>Statement: from(Model)
|
49
|
+
* Client->>Statement: where(condition)
|
50
|
+
* Client->>Statement: orderBy([field, direction])
|
51
|
+
* Client->>Statement: limit(value)
|
52
|
+
* Client->>Statement: execute()
|
53
|
+
* Statement->>Statement: build()
|
54
|
+
* Statement->>Adapter: raw(query)
|
55
|
+
* Adapter->>Database: execute query
|
56
|
+
* Database-->>Adapter: return results
|
57
|
+
* Adapter-->>Statement: return processed results
|
58
|
+
* Statement-->>Client: return final results
|
59
|
+
*/
|
9
60
|
export declare abstract class Statement<Q, M extends Model, R> implements Executor<R>, RawExecutor<Q>, Paginatable<M, R, Q> {
|
10
61
|
protected adapter: Adapter<any, Q, any, any>;
|
11
62
|
protected readonly selectSelector?: SelectSelector<M>[];
|
package/lib/query/constants.cjs
CHANGED
@@ -1,23 +1,48 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.GroupOperator = exports.Operator = void 0;
|
4
|
+
/**
|
5
|
+
* @description Comparison operators for query conditions
|
6
|
+
* @summary Enum defining the available operators for comparing values in database queries
|
7
|
+
* @enum {string}
|
8
|
+
* @readonly
|
9
|
+
* @memberOf module:core
|
10
|
+
*/
|
4
11
|
var Operator;
|
5
12
|
(function (Operator) {
|
13
|
+
/** Equal comparison (=) */
|
6
14
|
Operator["EQUAL"] = "EQUAL";
|
15
|
+
/** Not equal comparison (!=) */
|
7
16
|
Operator["DIFFERENT"] = "DIFFERENT";
|
17
|
+
/** Greater than comparison (>) */
|
8
18
|
Operator["BIGGER"] = "BIGGER";
|
19
|
+
/** Greater than or equal comparison (>=) */
|
9
20
|
Operator["BIGGER_EQ"] = "BIGGER_EQ";
|
21
|
+
/** Less than comparison (<) */
|
10
22
|
Operator["SMALLER"] = "SMALLER";
|
23
|
+
/** Less than or equal comparison (<=) */
|
11
24
|
Operator["SMALLER_EQ"] = "SMALLER_EQ";
|
12
25
|
// BETWEEN = "BETWEEN",
|
26
|
+
/** Negation operator (NOT) */
|
13
27
|
Operator["NOT"] = "NOT";
|
28
|
+
/** Inclusion operator (IN) */
|
14
29
|
Operator["IN"] = "IN";
|
15
30
|
// IS = "IS",
|
31
|
+
/** Regular expression matching */
|
16
32
|
Operator["REGEXP"] = "REGEXP";
|
17
33
|
})(Operator || (exports.Operator = Operator = {}));
|
34
|
+
/**
|
35
|
+
* @description Logical operators for combining query conditions
|
36
|
+
* @summary Enum defining the available operators for grouping multiple conditions in database queries
|
37
|
+
* @enum {string}
|
38
|
+
* @readonly
|
39
|
+
* @memberOf module:core
|
40
|
+
*/
|
18
41
|
var GroupOperator;
|
19
42
|
(function (GroupOperator) {
|
43
|
+
/** Logical AND operator - all conditions must be true */
|
20
44
|
GroupOperator["AND"] = "AND";
|
45
|
+
/** Logical OR operator - at least one condition must be true */
|
21
46
|
GroupOperator["OR"] = "OR";
|
22
47
|
})(GroupOperator || (exports.GroupOperator = GroupOperator = {}));
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3F1ZXJ5L2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7Ozs7O0dBTUc7QUFDSCxJQUFZLFFBcUJYO0FBckJELFdBQVksUUFBUTtJQUNsQiwyQkFBMkI7SUFDM0IsMkJBQWUsQ0FBQTtJQUNmLGdDQUFnQztJQUNoQyxtQ0FBdUIsQ0FBQTtJQUN2QixrQ0FBa0M7SUFDbEMsNkJBQWlCLENBQUE7SUFDakIsNENBQTRDO0lBQzVDLG1DQUF1QixDQUFBO0lBQ3ZCLCtCQUErQjtJQUMvQiwrQkFBbUIsQ0FBQTtJQUNuQix5Q0FBeUM7SUFDekMscUNBQXlCLENBQUE7SUFDekIsdUJBQXVCO0lBQ3ZCLDhCQUE4QjtJQUM5Qix1QkFBVyxDQUFBO0lBQ1gsOEJBQThCO0lBQzlCLHFCQUFTLENBQUE7SUFDVCxhQUFhO0lBQ2Isa0NBQWtDO0lBQ2xDLDZCQUFpQixDQUFBO0FBQ25CLENBQUMsRUFyQlcsUUFBUSx3QkFBUixRQUFRLFFBcUJuQjtBQUVEOzs7Ozs7R0FNRztBQUNILElBQVksYUFLWDtBQUxELFdBQVksYUFBYTtJQUN2Qix5REFBeUQ7SUFDekQsNEJBQVcsQ0FBQTtJQUNYLGdFQUFnRTtJQUNoRSwwQkFBUyxDQUFBO0FBQ1gsQ0FBQyxFQUxXLGFBQWEsNkJBQWIsYUFBYSxRQUt4QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGRlc2NyaXB0aW9uIENvbXBhcmlzb24gb3BlcmF0b3JzIGZvciBxdWVyeSBjb25kaXRpb25zXG4gKiBAc3VtbWFyeSBFbnVtIGRlZmluaW5nIHRoZSBhdmFpbGFibGUgb3BlcmF0b3JzIGZvciBjb21wYXJpbmcgdmFsdWVzIGluIGRhdGFiYXNlIHF1ZXJpZXNcbiAqIEBlbnVtIHtzdHJpbmd9XG4gKiBAcmVhZG9ubHlcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Y29yZVxuICovXG5leHBvcnQgZW51bSBPcGVyYXRvciB7XG4gIC8qKiBFcXVhbCBjb21wYXJpc29uICg9KSAqL1xuICBFUVVBTCA9IFwiRVFVQUxcIixcbiAgLyoqIE5vdCBlcXVhbCBjb21wYXJpc29uICghPSkgKi9cbiAgRElGRkVSRU5UID0gXCJESUZGRVJFTlRcIixcbiAgLyoqIEdyZWF0ZXIgdGhhbiBjb21wYXJpc29uICg+KSAqL1xuICBCSUdHRVIgPSBcIkJJR0dFUlwiLFxuICAvKiogR3JlYXRlciB0aGFuIG9yIGVxdWFsIGNvbXBhcmlzb24gKD49KSAqL1xuICBCSUdHRVJfRVEgPSBcIkJJR0dFUl9FUVwiLFxuICAvKiogTGVzcyB0aGFuIGNvbXBhcmlzb24gKDwpICovXG4gIFNNQUxMRVIgPSBcIlNNQUxMRVJcIixcbiAgLyoqIExlc3MgdGhhbiBvciBlcXVhbCBjb21wYXJpc29uICg8PSkgKi9cbiAgU01BTExFUl9FUSA9IFwiU01BTExFUl9FUVwiLFxuICAvLyBCRVRXRUVOID0gXCJCRVRXRUVOXCIsXG4gIC8qKiBOZWdhdGlvbiBvcGVyYXRvciAoTk9UKSAqL1xuICBOT1QgPSBcIk5PVFwiLFxuICAvKiogSW5jbHVzaW9uIG9wZXJhdG9yIChJTikgKi9cbiAgSU4gPSBcIklOXCIsXG4gIC8vIElTID0gXCJJU1wiLFxuICAvKiogUmVndWxhciBleHByZXNzaW9uIG1hdGNoaW5nICovXG4gIFJFR0VYUCA9IFwiUkVHRVhQXCIsXG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIExvZ2ljYWwgb3BlcmF0b3JzIGZvciBjb21iaW5pbmcgcXVlcnkgY29uZGl0aW9uc1xuICogQHN1bW1hcnkgRW51bSBkZWZpbmluZyB0aGUgYXZhaWxhYmxlIG9wZXJhdG9ycyBmb3IgZ3JvdXBpbmcgbXVsdGlwbGUgY29uZGl0aW9ucyBpbiBkYXRhYmFzZSBxdWVyaWVzXG4gKiBAZW51bSB7c3RyaW5nfVxuICogQHJlYWRvbmx5XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmNvcmVcbiAqL1xuZXhwb3J0IGVudW0gR3JvdXBPcGVyYXRvciB7XG4gIC8qKiBMb2dpY2FsIEFORCBvcGVyYXRvciAtIGFsbCBjb25kaXRpb25zIG11c3QgYmUgdHJ1ZSAqL1xuICBBTkQgPSBcIkFORFwiLFxuICAvKiogTG9naWNhbCBPUiBvcGVyYXRvciAtIGF0IGxlYXN0IG9uZSBjb25kaXRpb24gbXVzdCBiZSB0cnVlICovXG4gIE9SID0gXCJPUlwiLFxufVxuIl19
|
package/lib/query/constants.d.ts
CHANGED
@@ -1,15 +1,40 @@
|
|
1
|
+
/**
|
2
|
+
* @description Comparison operators for query conditions
|
3
|
+
* @summary Enum defining the available operators for comparing values in database queries
|
4
|
+
* @enum {string}
|
5
|
+
* @readonly
|
6
|
+
* @memberOf module:core
|
7
|
+
*/
|
1
8
|
export declare enum Operator {
|
9
|
+
/** Equal comparison (=) */
|
2
10
|
EQUAL = "EQUAL",
|
11
|
+
/** Not equal comparison (!=) */
|
3
12
|
DIFFERENT = "DIFFERENT",
|
13
|
+
/** Greater than comparison (>) */
|
4
14
|
BIGGER = "BIGGER",
|
15
|
+
/** Greater than or equal comparison (>=) */
|
5
16
|
BIGGER_EQ = "BIGGER_EQ",
|
17
|
+
/** Less than comparison (<) */
|
6
18
|
SMALLER = "SMALLER",
|
19
|
+
/** Less than or equal comparison (<=) */
|
7
20
|
SMALLER_EQ = "SMALLER_EQ",
|
21
|
+
/** Negation operator (NOT) */
|
8
22
|
NOT = "NOT",
|
23
|
+
/** Inclusion operator (IN) */
|
9
24
|
IN = "IN",
|
25
|
+
/** Regular expression matching */
|
10
26
|
REGEXP = "REGEXP"
|
11
27
|
}
|
28
|
+
/**
|
29
|
+
* @description Logical operators for combining query conditions
|
30
|
+
* @summary Enum defining the available operators for grouping multiple conditions in database queries
|
31
|
+
* @enum {string}
|
32
|
+
* @readonly
|
33
|
+
* @memberOf module:core
|
34
|
+
*/
|
12
35
|
export declare enum GroupOperator {
|
36
|
+
/** Logical AND operator - all conditions must be true */
|
13
37
|
AND = "AND",
|
38
|
+
/** Logical OR operator - at least one condition must be true */
|
14
39
|
OR = "OR"
|
15
40
|
}
|
package/lib/query/errors.cjs
CHANGED
@@ -2,16 +2,30 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.PagingError = exports.QueryError = void 0;
|
4
4
|
const db_decorators_1 = require("@decaf-ts/db-decorators");
|
5
|
+
/**
|
6
|
+
* @description Error thrown during query operations
|
7
|
+
* @summary Represents errors that occur during query building or execution
|
8
|
+
* @param {string | Error} msg - The error message or Error object
|
9
|
+
* @class QueryError
|
10
|
+
* @category Errors
|
11
|
+
*/
|
5
12
|
class QueryError extends db_decorators_1.BaseError {
|
6
13
|
constructor(msg) {
|
7
14
|
super(QueryError.name, msg, 500);
|
8
15
|
}
|
9
16
|
}
|
10
17
|
exports.QueryError = QueryError;
|
18
|
+
/**
|
19
|
+
* @description Error thrown during pagination operations
|
20
|
+
* @summary Represents errors that occur during pagination setup or execution
|
21
|
+
* @param {string | Error} msg - The error message or Error object
|
22
|
+
* @class PagingError
|
23
|
+
* @category Errors
|
24
|
+
*/
|
11
25
|
class PagingError extends db_decorators_1.BaseError {
|
12
26
|
constructor(msg) {
|
13
27
|
super(PagingError.name, msg, 500);
|
14
28
|
}
|
15
29
|
}
|
16
30
|
exports.PagingError = PagingError;
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3F1ZXJ5L2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyREFBb0Q7QUFFcEQ7Ozs7OztHQU1HO0FBQ0gsTUFBYSxVQUFXLFNBQVEseUJBQVM7SUFDdkMsWUFBWSxHQUFtQjtRQUM3QixLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbkMsQ0FBQztDQUNGO0FBSkQsZ0NBSUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFhLFdBQVksU0FBUSx5QkFBUztJQUN4QyxZQUFZLEdBQW1CO1FBQzdCLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNwQyxDQUFDO0NBQ0Y7QUFKRCxrQ0FJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VFcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBFcnJvciB0aHJvd24gZHVyaW5nIHF1ZXJ5IG9wZXJhdGlvbnNcbiAqIEBzdW1tYXJ5IFJlcHJlc2VudHMgZXJyb3JzIHRoYXQgb2NjdXIgZHVyaW5nIHF1ZXJ5IGJ1aWxkaW5nIG9yIGV4ZWN1dGlvblxuICogQHBhcmFtIHtzdHJpbmcgfCBFcnJvcn0gbXNnIC0gVGhlIGVycm9yIG1lc3NhZ2Ugb3IgRXJyb3Igb2JqZWN0XG4gKiBAY2xhc3MgUXVlcnlFcnJvclxuICogQGNhdGVnb3J5IEVycm9yc1xuICovXG5leHBvcnQgY2xhc3MgUXVlcnlFcnJvciBleHRlbmRzIEJhc2VFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1zZzogc3RyaW5nIHwgRXJyb3IpIHtcbiAgICBzdXBlcihRdWVyeUVycm9yLm5hbWUsIG1zZywgNTAwKTtcbiAgfVxufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBFcnJvciB0aHJvd24gZHVyaW5nIHBhZ2luYXRpb24gb3BlcmF0aW9uc1xuICogQHN1bW1hcnkgUmVwcmVzZW50cyBlcnJvcnMgdGhhdCBvY2N1ciBkdXJpbmcgcGFnaW5hdGlvbiBzZXR1cCBvciBleGVjdXRpb25cbiAqIEBwYXJhbSB7c3RyaW5nIHwgRXJyb3J9IG1zZyAtIFRoZSBlcnJvciBtZXNzYWdlIG9yIEVycm9yIG9iamVjdFxuICogQGNsYXNzIFBhZ2luZ0Vycm9yXG4gKiBAY2F0ZWdvcnkgRXJyb3JzXG4gKi9cbmV4cG9ydCBjbGFzcyBQYWdpbmdFcnJvciBleHRlbmRzIEJhc2VFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1zZzogc3RyaW5nIHwgRXJyb3IpIHtcbiAgICBzdXBlcihQYWdpbmdFcnJvci5uYW1lLCBtc2csIDUwMCk7XG4gIH1cbn1cbiJdfQ==
|
package/lib/query/errors.d.ts
CHANGED
@@ -1,7 +1,21 @@
|
|
1
1
|
import { BaseError } from "@decaf-ts/db-decorators";
|
2
|
+
/**
|
3
|
+
* @description Error thrown during query operations
|
4
|
+
* @summary Represents errors that occur during query building or execution
|
5
|
+
* @param {string | Error} msg - The error message or Error object
|
6
|
+
* @class QueryError
|
7
|
+
* @category Errors
|
8
|
+
*/
|
2
9
|
export declare class QueryError extends BaseError {
|
3
10
|
constructor(msg: string | Error);
|
4
11
|
}
|
12
|
+
/**
|
13
|
+
* @description Error thrown during pagination operations
|
14
|
+
* @summary Represents errors that occur during pagination setup or execution
|
15
|
+
* @param {string | Error} msg - The error message or Error object
|
16
|
+
* @class PagingError
|
17
|
+
* @category Errors
|
18
|
+
*/
|
5
19
|
export declare class PagingError extends BaseError {
|
6
20
|
constructor(msg: string | Error);
|
7
21
|
}
|
package/lib/query/options.cjs
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWVyeS9vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGUgKi9cbmltcG9ydCB7XG4gIEdyb3VwQnlTZWxlY3RvcixcbiAgTGltaXRTZWxlY3RvcixcbiAgT2Zmc2V0U2VsZWN0b3IsXG4gIE9yZGVyQnlTZWxlY3RvcixcbiAgU2VsZWN0U2VsZWN0b3IsXG59IGZyb20gXCIuL3NlbGVjdG9yc1wiO1xuaW1wb3J0IHsgRXhlY3V0b3IgfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0b3IsIE1vZGVsIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgQ29uZGl0aW9uIH0gZnJvbSBcIi4vQ29uZGl0aW9uXCI7XG5pbXBvcnQgeyBQYWdpbmF0YWJsZSB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL1BhZ2luYXRhYmxlXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgR3JvdXBCeSBPcHRpb24gaW50ZXJmYWNlXG4gKiBAZGVzY3JpcHRpb24gRXhwb3NlcyB0aGUgR1JPVVAgQlkgbWV0aG9kIGFuZCByZW1haW5pbmcgb3B0aW9uc1xuICpcbiAqIEBpbnRlcmZhY2UgR3JvdXBCeU9wdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdyb3VwQnlPcHRpb248TSBleHRlbmRzIE1vZGVsLCBSPiBleHRlbmRzIEV4ZWN1dG9yPFI+IHtcbiAgZ3JvdXBCeShzZWxlY3RvcjogR3JvdXBCeVNlbGVjdG9yPE0+KTogRXhlY3V0b3I8Uj47XG59XG4vKipcbiAqIEBzdW1tYXJ5IE9mZnNldCBPcHRpb24gaW50ZXJmYWNlXG4gKiBAZGVzY3JpcHRpb24gRXhwb3NlcyB0aGUgT0ZGU0VUIG1ldGhvZCBhbmQgcmVtYWluaW5nIG9wdGlvbnNcbiAqXG4gKiBAaW50ZXJmYWNlIEdyb3VwQnlPcHRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPZmZzZXRPcHRpb248Uj4gZXh0ZW5kcyBFeGVjdXRvcjxSPiB7XG4gIG9mZnNldChzZWxlY3RvcjogT2Zmc2V0U2VsZWN0b3IpOiBFeGVjdXRvcjxSPjtcbn1cbi8qKlxuICogQHN1bW1hcnkgTGltaXQgT3B0aW9uIGludGVyZmFjZVxuICogQGRlc2NyaXB0aW9uIEV4cG9zZXMgdGhlIExJTUlUIG1ldGhvZCBhbmQgcmVtYWluaW5nIG9wdGlvbnNcbiAqXG4gKiBAaW50ZXJmYWNlIExpbWl0T3B0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGltaXRPcHRpb248TSBleHRlbmRzIE1vZGVsLCBSPlxuICBleHRlbmRzIEV4ZWN1dG9yPFI+LFxuICAgIFBhZ2luYXRhYmxlPE0sIFIsIGFueT4ge1xuICBsaW1pdChzZWxlY3RvcjogTGltaXRTZWxlY3Rvcik6IE9mZnNldE9wdGlvbjxSPjtcbn1cbi8qKlxuICogQHN1bW1hcnkgT3JkZXJCeSBPcHRpb24gaW50ZXJmYWNlXG4gKiBAZGVzY3JpcHRpb24gRXhwb3NlcyB0aGUgT1JERVIgQlkgbWV0aG9kIGFuZCByZW1haW5pbmcgb3B0aW9uc1xuICpcbiAqIEBpbnRlcmZhY2UgT3JkZXJCeU9wdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9yZGVyQnlPcHRpb248TSBleHRlbmRzIE1vZGVsLCBSPlxuICBleHRlbmRzIEV4ZWN1dG9yPFI+LFxuICAgIFBhZ2luYXRhYmxlPE0sIFIsIGFueT4ge1xuICBvcmRlckJ5KHNlbGVjdG9yOiBPcmRlckJ5U2VsZWN0b3I8TT4pOiBMaW1pdE9wdGlvbjxNLCBSPiAmIE9mZnNldE9wdGlvbjxSPjtcbn1cbi8qKlxuICogQHN1bW1hcnkgT3JkZXJCeSBPcHRpb24gaW50ZXJmYWNlXG4gKiBAZGVzY3JpcHRpb24gRXhwb3NlcyB0aGUgT1JERVIgQlkgbWV0aG9kIGFuZCByZW1haW5pbmcgb3B0aW9uc1xuICpcbiAqIEBpbnRlcmZhY2UgVGhlbkJ5T3B0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGhlbkJ5T3B0aW9uPE0gZXh0ZW5kcyBNb2RlbCwgUj5cbiAgZXh0ZW5kcyBMaW1pdE9wdGlvbjxNLCBSPixcbiAgICBPZmZzZXRPcHRpb248Uj4sXG4gICAgRXhlY3V0b3I8Uj4sXG4gICAgUGFnaW5hdGFibGU8TSwgUiwgYW55PiB7XG4gIHRoZW5CeShzZWxlY3RvcjogT3JkZXJCeVNlbGVjdG9yPE0+KTogVGhlbkJ5T3B0aW9uPE0sIFI+O1xufVxuLyoqXG4gKiBAc3VtbWFyeSBHcm91cHMgc2V2ZXJhbCBvcmRlciBhbmQgZ3JvdXBpbmcgb3B0aW9uc1xuICpcbiAqIEBpbnRlcmZhY2UgT3JkZXJBbmRHcm91cE9wdGlvblxuICogQGV4dGVuZHMgT3JkZXJCeU9wdGlvblxuICogQGV4dGVuZHMgR3JvdXBCeU9wdGlvblxuICogQGV4dGVuZHMgTGltaXRPcHRpb25cbiAqIEBleHRlbmRzIE9mZnNldE9wdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9yZGVyQW5kR3JvdXBPcHRpb248TSBleHRlbmRzIE1vZGVsLCBSPlxuICBleHRlbmRzIE9yZGVyQnlPcHRpb248TSwgUj4sXG4gICAgRXhlY3V0b3I8Uj4sXG4gICAgR3JvdXBCeU9wdGlvbjxNLCBSPixcbiAgICBMaW1pdE9wdGlvbjxNLCBSPixcbiAgICBPZmZzZXRPcHRpb248Uj4ge31cbi8qKlxuICogQHN1bW1hcnkgV2hlcmUgT3B0aW9uIGludGVyZmFjZVxuICogQGRlc2NyaXB0aW9uIEV4cG9zZXMgdGhlIFdIRVJFIG1ldGhvZCBhbmQgcmVtYWluaW5nIG9wdGlvbnNcbiAqXG4gKiBAaW50ZXJmYWNlIFdoZXJlT3B0aW9uXG4gKiBAZXh0ZW5kcyBPcmRlckFuZEdyb3VwT3B0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2hlcmVPcHRpb248TSBleHRlbmRzIE1vZGVsLCBSPlxuICBleHRlbmRzIE9yZGVyQW5kR3JvdXBPcHRpb248TSwgUj4ge1xuICAvKipcbiAgICogQHN1bW1hcnkgZmlsdGVyIHRoZSByZWNvcmRzIGJ5IGEgY29uZGl0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7Q29uZGl0aW9ufSBjb25kaXRpb25cbiAgICogQG1ldGhvZFxuICAgKi9cbiAgd2hlcmUoY29uZGl0aW9uOiBDb25kaXRpb248TT4pOiBPcmRlckFuZEdyb3VwT3B0aW9uPE0sIFI+O1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IEZyb20gT3B0aW9uIEludGVyZmFjZVxuICogQGRlc2NyaXB0aW9uIEV4cG9zZXMgdGhlIEZST00gbWV0aG9kIGFuZCByZW1haW5pbmcgb3B0aW9uc1xuICpcbiAqIEBpbnRlcmZhY2UgRnJvbU9wdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZyb21PcHRpb248TSBleHRlbmRzIE1vZGVsLCBSPiB7XG4gIC8qKlxuICAgKiBAc3VtbWFyeSBzZWxlY3RzIHJlY29yZHMgZnJvbSBhIHRhYmxlXG4gICAqXG4gICAqIEBwYXJhbSB7Q29uc3RydWN0b3J9IHRhYmxlTmFtZVxuICAgKiBAbWV0aG9kXG4gICAqL1xuICBmcm9tKHRhYmxlTmFtZTogQ29uc3RydWN0b3I8TT4gfCBzdHJpbmcpOiBXaGVyZU9wdGlvbjxNLCBSPjtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBEaXN0aW5jdCBPcHRpb24gSW50ZXJmYWNlXG4gKiBAZGVzY3JpcHRpb24gRXhwb3NlcyB0aGUgcmVtYWluaW5nIG9wdGlvbnMgYWZ0ZXIgYSBESVNUSU5DVFxuICpcbiAqIEBpbnRlcmZhY2UgRGlzdGluY3RPcHRpb25cbiAqIEBleHRlbmRzIEZyb21PcHRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEaXN0aW5jdE9wdGlvbjxNIGV4dGVuZHMgTW9kZWwsIFI+IGV4dGVuZHMgRnJvbU9wdGlvbjxNLCBSPiB7fVxuXG4vKipcbiAqIEBzdW1tYXJ5IE1heCBPcHRpb24gSW50ZXJmYWNlXG4gKiBAZGVzY3JpcHRpb24gRXhwb3NlcyB0aGUgcmVtYWluaW5nIG9wdGlvbnMgYWZ0ZXIgYSBNQVhcbiAqXG4gKiBAaW50ZXJmYWNlIE1heE9wdGlvblxuICogQGV4dGVuZHMgRnJvbU9wdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1heE9wdGlvbjxNIGV4dGVuZHMgTW9kZWwsIFI+IGV4dGVuZHMgRnJvbU9wdGlvbjxNLCBSPiB7fVxuXG4vKipcbiAqIEBzdW1tYXJ5IE1pbiBPcHRpb24gSW50ZXJmYWNlXG4gKiBAZGVzY3JpcHRpb24gRXhwb3NlcyB0aGUgcmVtYWluaW5nIG9wdGlvbnMgYWZ0ZXIgYSBNSU5cbiAqXG4gKiBAaW50ZXJmYWNlIE1pbk9wdGlvblxuICogQGV4dGVuZHMgRnJvbU9wdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1pbk9wdGlvbjxNIGV4dGVuZHMgTW9kZWwsIFI+IGV4dGVuZHMgRnJvbU9wdGlvbjxNLCBSPiB7fVxuXG4vKipcbiAqIEBzdW1tYXJ5IENvdW50IE9wdGlvbiBJbnRlcmZhY2VcbiAqIEBkZXNjcmlwdGlvbiBFeHBvc2VzIHRoZSByZW1haW5pbmcgb3B0aW9ucyBhZnRlciBhIENPVU5UXG4gKlxuICogQGludGVyZmFjZSBDb3VudE9wdGlvblxuICogQGV4dGVuZHMgRnJvbU9wdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvdW50T3B0aW9uPE0gZXh0ZW5kcyBNb2RlbCwgUj4gZXh0ZW5kcyBGcm9tT3B0aW9uPE0sIFI+IHt9XG5cbi8qKlxuICogQHN1bW1hcnkgU2VsZWN0IE9wdGlvbiBJbnRlcmZhY2VcbiAqIEBkZXNjcmlwdGlvbiBFeHBvc2VzIHRoZSByZW1haW5pbmcgb3B0aW9ucyBhZnRlciBhIFNFTEVDVFxuICpcbiAqIEBpbnRlcmZhY2UgU2VsZWN0T3B0aW9uXG4gKiBAZXh0ZW5kcyBGcm9tT3B0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0T3B0aW9uPE0gZXh0ZW5kcyBNb2RlbCwgUj4gZXh0ZW5kcyBGcm9tT3B0aW9uPE0sIFI+IHtcbiAgZGlzdGluY3Q8UyBleHRlbmRzIFNlbGVjdFNlbGVjdG9yPE0+PihzZWxlY3RvcjogUyk6IERpc3RpbmN0T3B0aW9uPE0sIE1bU11bXT47XG5cbiAgbWF4PFMgZXh0ZW5kcyBTZWxlY3RTZWxlY3RvcjxNPj4oc2VsZWN0b3I6IFMpOiBNYXhPcHRpb248TSwgTVtTXT47XG5cbiAgbWluPFMgZXh0ZW5kcyBTZWxlY3RTZWxlY3RvcjxNPj4oc2VsZWN0b3I6IFMpOiBNaW5PcHRpb248TSwgTVtTXT47XG5cbiAgY291bnQ8UyBleHRlbmRzIFNlbGVjdFNlbGVjdG9yPE0+PihzZWxlY3Rvcj86IFMpOiBDb3VudE9wdGlvbjxNLCBudW1iZXI+O1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IEludG8gT3B0aW9uIEludGVyZmFjZVxuICogQGRlc2NyaXB0aW9uIEV4cG9zZXMgdGhlIHJlbWFpbmluZyBvcHRpb25zIGFmdGVyIGFuIElOVE9cbiAqXG4gKiBAaW50ZXJmYWNlIEludG9PcHRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRvT3B0aW9uPE0gZXh0ZW5kcyBNb2RlbCwgUj4ge1xuICB2YWx1ZXMoLi4ubW9kZWxzOiBNW10pOiBFeGVjdXRvcjxSPjtcblxuICB3aGVyZShjb25kaXRpb246IENvbmRpdGlvbjxNPik6IEV4ZWN1dG9yPFI+O1xufVxuLyoqXG4gKiBAc3VtbWFyeSBWYWx1ZXN0IE9wdGlvbiBJbnRlcmZhY2VcbiAqIEBkZXNjcmlwdGlvbiBFeHBvc2VzIHRoZSByZW1haW5pbmcgb3B0aW9ucyBhZnRlciBhIFZBTFVFU1xuICpcbiAqIEBpbnRlcmZhY2UgVmFsdWVzT3B0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmFsdWVzT3B0aW9uPE0gZXh0ZW5kcyBNb2RlbD4gZXh0ZW5kcyBFeGVjdXRvcjxNPiB7fVxuLyoqXG4gKiBAc3VtbWFyeSBJbnNlcnQgT3B0aW9uIEludGVyZmFjZVxuICogQGRlc2NyaXB0aW9uIEV4cG9zZXMgdGhlIHJlbWFpbmluZyBvcHRpb25zIGFmdGVyIGFuIElOU0VSVFxuICpcbiAqIEBpbnRlcmZhY2UgSW5zZXJ0T3B0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5zZXJ0T3B0aW9uPE0gZXh0ZW5kcyBNb2RlbCwgUiA9IHZvaWQ+IHtcbiAgLyoqXG4gICAqIEBzdW1tYXJ5IHNlbGVjdHMgdGhlIHRhYmxlIHRvIGluc2VydCByZWNvcmRzIGludG9cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBDb25zdHJ1Y3Rvcn0gdGFibGVcbiAgICogQG1ldGhvZFxuICAgKi9cbiAgaW50byh0YWJsZTogQ29uc3RydWN0b3I8TT4pOiBJbnRvT3B0aW9uPE0sIFI+O1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IHtAbGluayBPcGVyYXRvcn0gT3B0aW9uIEludGVyZmFjZVxuICogQGRlc2NyaXB0aW9uIEV4cG9zZXMgdGhlIGF2YWlsYWJsZSBvcGVyYXRvcnMgZm9yIGEge0BsaW5rIENvbmRpdGlvbn1cbiAqXG4gKiBAaW50ZXJmYWNlIEF0dHJpYnV0ZU9wdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF0dHJpYnV0ZU9wdGlvbjxNIGV4dGVuZHMgTW9kZWw+IHtcbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFRlc3QgZXF1YWxpdHlcbiAgICpcbiAgICogQHBhcmFtIHthbnl9IHZhbCB0aGUgdmFsdWUgdG8gdGVzdFxuICAgKiBAbWV0aG9kXG4gICAqL1xuICBlcSh2YWw6IGFueSk6IENvbmRpdGlvbjxNPjtcbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFRlc3QgZGlmZmVyZW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge2FueX0gdmFsIHRoZSB2YWx1ZSB0byB0ZXN0XG4gICAqIEBtZXRob2RcbiAgICovXG4gIGRpZih2YWw6IGFueSk6IENvbmRpdGlvbjxNPjtcbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFRlc3QgZ3JlYXRlciB0aGFuXG4gICAqXG4gICAqIEBwYXJhbSB7YW55fSB2YWwgdGhlIHZhbHVlIHRvIHRlc3RcbiAgICogQG1ldGhvZFxuICAgKi9cbiAgZ3QodmFsOiBhbnkpOiBDb25kaXRpb248TT47XG4gIC8qKlxuICAgKiBAc3VtbWFyeSBUZXN0IGxvd2VyIHRoYW5cbiAgICpcbiAgICogQHBhcmFtIHthbnl9IHZhbCB0aGUgdmFsdWUgdG8gdGVzdFxuICAgKiBAbWV0aG9kXG4gICAqL1xuICBsdCh2YWw6IGFueSk6IENvbmRpdGlvbjxNPjtcbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFRlc3QgZ3JlYXRlciBvciBlcXVhbCB0b1xuICAgKlxuICAgKiBAcGFyYW0ge2FueX0gdmFsIHRoZSB2YWx1ZSB0byB0ZXN0XG4gICAqIEBtZXRob2RcbiAgICovXG4gIGd0ZSh2YWw6IGFueSk6IENvbmRpdGlvbjxNPjtcbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFRlc3QgbG93ZXIgb3IgZXF1YWwgdG9cbiAgICpcbiAgICogQHBhcmFtIHthbnl9IHZhbCB0aGUgdmFsdWUgdG8gdGVzdFxuICAgKiBAbWV0aG9kXG4gICAqL1xuICBsdGUodmFsOiBhbnkpOiBDb25kaXRpb248TT47XG4gIC8qKlxuICAgKiBAc3VtbWFyeSBUZXN0IHZhbHVlIGluIGEgcmFuZ2Ugb2YgdmFsdWVzXG4gICAqIEBwYXJhbSB7YW55W119IHZhbFxuICAgKi9cbiAgaW4odmFsOiBhbnlbXSk6IENvbmRpdGlvbjxNPjtcbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFRlc3QgbWF0Y2hlcyB7QGxpbmsgUmVnRXhwfVxuICAgKlxuICAgKiBAcGFyYW0ge2FueX0gdmFsIHRoZSB2YWx1ZSB0byB0ZXN0XG4gICAqIEBtZXRob2RcbiAgICovXG4gIHJlZ2V4cCh2YWw6IHN0cmluZyB8IFJlZ0V4cCk6IENvbmRpdGlvbjxNPjtcbn1cbi8qKlxuICogQHN1bW1hcnkgVGhlIHN0YXJ0aW5nIHBvaW50IGZvciBjcmVhdGluZyBDb25kaXRpb25zXG4gKiBAZGVzY3JpcHRpb24gRXhwb3NlcyB0aGUgYXZhaWxhYmxlIG9wZXJhdGlvbnMgZm9yIGEge0BsaW5rIENvbmRpdGlvbn1cbiAqXG4gKiBAaW50ZXJmYWNlIENvbmRpdGlvbkJ1aWxkZXJPcHRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25kaXRpb25CdWlsZGVyT3B0aW9uPE0gZXh0ZW5kcyBNb2RlbD4ge1xuICBhdHRyaWJ1dGUoYXR0cjoga2V5b2YgTSk6IEF0dHJpYnV0ZU9wdGlvbjxNPjtcbn1cbiJdfQ==
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWVyeS9vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGUgKi9cbmltcG9ydCB7XG4gIEdyb3VwQnlTZWxlY3RvcixcbiAgTGltaXRTZWxlY3RvcixcbiAgT2Zmc2V0U2VsZWN0b3IsXG4gIE9yZGVyQnlTZWxlY3RvcixcbiAgU2VsZWN0U2VsZWN0b3IsXG59IGZyb20gXCIuL3NlbGVjdG9yc1wiO1xuaW1wb3J0IHsgRXhlY3V0b3IgfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0b3IsIE1vZGVsIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgQ29uZGl0aW9uIH0gZnJvbSBcIi4vQ29uZGl0aW9uXCI7XG5pbXBvcnQgeyBQYWdpbmF0YWJsZSB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL1BhZ2luYXRhYmxlXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgR3JvdXBCeSBPcHRpb24gaW50ZXJmYWNlXG4gKiBAZGVzY3JpcHRpb24gRXhwb3NlcyB0aGUgR1JPVVAgQlkgbWV0aG9kIGFuZCByZW1haW5pbmcgb3B0aW9uc1xuICpcbiAqIEBpbnRlcmZhY2UgR3JvdXBCeU9wdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpjb3JlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3JvdXBCeU9wdGlvbjxNIGV4dGVuZHMgTW9kZWwsIFI+IGV4dGVuZHMgRXhlY3V0b3I8Uj4ge1xuICBncm91cEJ5KHNlbGVjdG9yOiBHcm91cEJ5U2VsZWN0b3I8TT4pOiBFeGVjdXRvcjxSPjtcbn1cbi8qKlxuICogQHN1bW1hcnkgT2Zmc2V0IE9wdGlvbiBpbnRlcmZhY2VcbiAqIEBkZXNjcmlwdGlvbiBFeHBvc2VzIHRoZSBPRkZTRVQgbWV0aG9kIGFuZCByZW1haW5pbmcgb3B0aW9uc1xuICpcbiAqIEBpbnRlcmZhY2UgR3JvdXBCeU9wdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpjb3JlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2Zmc2V0T3B0aW9uPFI+IGV4dGVuZHMgRXhlY3V0b3I8Uj4ge1xuICBvZmZzZXQoc2VsZWN0b3I6IE9mZnNldFNlbGVjdG9yKTogRXhlY3V0b3I8Uj47XG59XG4vKipcbiAqIEBzdW1tYXJ5IExpbWl0IE9wdGlvbiBpbnRlcmZhY2VcbiAqIEBkZXNjcmlwdGlvbiBFeHBvc2VzIHRoZSBMSU1JVCBtZXRob2QgYW5kIHJlbWFpbmluZyBvcHRpb25zXG4gKlxuICogQGludGVyZmFjZSBMaW1pdE9wdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpjb3JlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGltaXRPcHRpb248TSBleHRlbmRzIE1vZGVsLCBSPlxuICBleHRlbmRzIEV4ZWN1dG9yPFI+LFxuICAgIFBhZ2luYXRhYmxlPE0sIFIsIGFueT4ge1xuICBsaW1pdChzZWxlY3RvcjogTGltaXRTZWxlY3Rvcik6IE9mZnNldE9wdGlvbjxSPjtcbn1cbi8qKlxuICogQHN1bW1hcnkgT3JkZXJCeSBPcHRpb24gaW50ZXJmYWNlXG4gKiBAZGVzY3JpcHRpb24gRXhwb3NlcyB0aGUgT1JERVIgQlkgbWV0aG9kIGFuZCByZW1haW5pbmcgb3B0aW9uc1xuICpcbiAqIEBpbnRlcmZhY2UgT3JkZXJCeU9wdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpjb3JlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3JkZXJCeU9wdGlvbjxNIGV4dGVuZHMgTW9kZWwsIFI+XG4gIGV4dGVuZHMgRXhlY3V0b3I8Uj4sXG4gICAgUGFnaW5hdGFibGU8TSwgUiwgYW55PiB7XG4gIG9yZGVyQnkoc2VsZWN0b3I6IE9yZGVyQnlTZWxlY3RvcjxNPik6IExpbWl0T3B0aW9uPE0sIFI+ICYgT2Zmc2V0T3B0aW9uPFI+O1xufVxuLyoqXG4gKiBAc3VtbWFyeSBPcmRlckJ5IE9wdGlvbiBpbnRlcmZhY2VcbiAqIEBkZXNjcmlwdGlvbiBFeHBvc2VzIHRoZSBPUkRFUiBCWSBtZXRob2QgYW5kIHJlbWFpbmluZyBvcHRpb25zXG4gKlxuICogQGludGVyZmFjZSBUaGVuQnlPcHRpb25cbiAqIEBtZW1iZXJPZiBtb2R1bGU6Y29yZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRoZW5CeU9wdGlvbjxNIGV4dGVuZHMgTW9kZWwsIFI+XG4gIGV4dGVuZHMgTGltaXRPcHRpb248TSwgUj4sXG4gICAgT2Zmc2V0T3B0aW9uPFI+LFxuICAgIEV4ZWN1dG9yPFI+LFxuICAgIFBhZ2luYXRhYmxlPE0sIFIsIGFueT4ge1xuICB0aGVuQnkoc2VsZWN0b3I6IE9yZGVyQnlTZWxlY3RvcjxNPik6IFRoZW5CeU9wdGlvbjxNLCBSPjtcbn1cbi8qKlxuICogQHN1bW1hcnkgR3JvdXBzIHNldmVyYWwgb3JkZXIgYW5kIGdyb3VwaW5nIG9wdGlvbnNcbiAqXG4gKiBAaW50ZXJmYWNlIE9yZGVyQW5kR3JvdXBPcHRpb25cbiAqIEBleHRlbmRzIE9yZGVyQnlPcHRpb25cbiAqIEBleHRlbmRzIEdyb3VwQnlPcHRpb25cbiAqIEBleHRlbmRzIExpbWl0T3B0aW9uXG4gKiBAZXh0ZW5kcyBPZmZzZXRPcHRpb25cbiAqIEBtZW1iZXJPZiBtb2R1bGU6Y29yZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9yZGVyQW5kR3JvdXBPcHRpb248TSBleHRlbmRzIE1vZGVsLCBSPlxuICBleHRlbmRzIE9yZGVyQnlPcHRpb248TSwgUj4sXG4gICAgRXhlY3V0b3I8Uj4sXG4gICAgR3JvdXBCeU9wdGlvbjxNLCBSPixcbiAgICBMaW1pdE9wdGlvbjxNLCBSPixcbiAgICBPZmZzZXRPcHRpb248Uj4ge31cbi8qKlxuICogQHN1bW1hcnkgV2hlcmUgT3B0aW9uIGludGVyZmFjZVxuICogQGRlc2NyaXB0aW9uIEV4cG9zZXMgdGhlIFdIRVJFIG1ldGhvZCBhbmQgcmVtYWluaW5nIG9wdGlvbnNcbiAqXG4gKiBAaW50ZXJmYWNlIFdoZXJlT3B0aW9uXG4gKiBAZXh0ZW5kcyBPcmRlckFuZEdyb3VwT3B0aW9uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmNvcmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXaGVyZU9wdGlvbjxNIGV4dGVuZHMgTW9kZWwsIFI+XG4gIGV4dGVuZHMgT3JkZXJBbmRHcm91cE9wdGlvbjxNLCBSPiB7XG4gIC8qKlxuICAgKiBAc3VtbWFyeSBmaWx0ZXIgdGhlIHJlY29yZHMgYnkgYSBjb25kaXRpb25cbiAgICpcbiAgICogQHBhcmFtIHtDb25kaXRpb259IGNvbmRpdGlvblxuICAgKiBAbWV0aG9kXG4gICAqL1xuICB3aGVyZShjb25kaXRpb246IENvbmRpdGlvbjxNPik6IE9yZGVyQW5kR3JvdXBPcHRpb248TSwgUj47XG59XG5cbi8qKlxuICogQHN1bW1hcnkgRnJvbSBPcHRpb24gSW50ZXJmYWNlXG4gKiBAZGVzY3JpcHRpb24gRXhwb3NlcyB0aGUgRlJPTSBtZXRob2QgYW5kIHJlbWFpbmluZyBvcHRpb25zXG4gKlxuICogQGludGVyZmFjZSBGcm9tT3B0aW9uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmNvcmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGcm9tT3B0aW9uPE0gZXh0ZW5kcyBNb2RlbCwgUj4ge1xuICAvKipcbiAgICogQHN1bW1hcnkgc2VsZWN0cyByZWNvcmRzIGZyb20gYSB0YWJsZVxuICAgKlxuICAgKiBAcGFyYW0ge0NvbnN0cnVjdG9yfSB0YWJsZU5hbWVcbiAgICogQG1ldGhvZFxuICAgKi9cbiAgZnJvbSh0YWJsZU5hbWU6IENvbnN0cnVjdG9yPE0+IHwgc3RyaW5nKTogV2hlcmVPcHRpb248TSwgUj47XG59XG5cbi8qKlxuICogQHN1bW1hcnkgRGlzdGluY3QgT3B0aW9uIEludGVyZmFjZVxuICogQGRlc2NyaXB0aW9uIEV4cG9zZXMgdGhlIHJlbWFpbmluZyBvcHRpb25zIGFmdGVyIGEgRElTVElOQ1RcbiAqXG4gKiBAaW50ZXJmYWNlIERpc3RpbmN0T3B0aW9uXG4gKiBAZXh0ZW5kcyBGcm9tT3B0aW9uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmNvcmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEaXN0aW5jdE9wdGlvbjxNIGV4dGVuZHMgTW9kZWwsIFI+IGV4dGVuZHMgRnJvbU9wdGlvbjxNLCBSPiB7fVxuXG4vKipcbiAqIEBzdW1tYXJ5IE1heCBPcHRpb24gSW50ZXJmYWNlXG4gKiBAZGVzY3JpcHRpb24gRXhwb3NlcyB0aGUgcmVtYWluaW5nIG9wdGlvbnMgYWZ0ZXIgYSBNQVhcbiAqXG4gKiBAaW50ZXJmYWNlIE1heE9wdGlvblxuICogQGV4dGVuZHMgRnJvbU9wdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpjb3JlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWF4T3B0aW9uPE0gZXh0ZW5kcyBNb2RlbCwgUj4gZXh0ZW5kcyBGcm9tT3B0aW9uPE0sIFI+IHt9XG5cbi8qKlxuICogQHN1bW1hcnkgTWluIE9wdGlvbiBJbnRlcmZhY2VcbiAqIEBkZXNjcmlwdGlvbiBFeHBvc2VzIHRoZSByZW1haW5pbmcgb3B0aW9ucyBhZnRlciBhIE1JTlxuICpcbiAqIEBpbnRlcmZhY2UgTWluT3B0aW9uXG4gKiBAZXh0ZW5kcyBGcm9tT3B0aW9uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmNvcmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNaW5PcHRpb248TSBleHRlbmRzIE1vZGVsLCBSPiBleHRlbmRzIEZyb21PcHRpb248TSwgUj4ge31cblxuLyoqXG4gKiBAc3VtbWFyeSBDb3VudCBPcHRpb24gSW50ZXJmYWNlXG4gKiBAZGVzY3JpcHRpb24gRXhwb3NlcyB0aGUgcmVtYWluaW5nIG9wdGlvbnMgYWZ0ZXIgYSBDT1VOVFxuICpcbiAqIEBpbnRlcmZhY2UgQ291bnRPcHRpb25cbiAqIEBleHRlbmRzIEZyb21PcHRpb25cbiAqIEBtZW1iZXJPZiBtb2R1bGU6Y29yZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvdW50T3B0aW9uPE0gZXh0ZW5kcyBNb2RlbCwgUj4gZXh0ZW5kcyBGcm9tT3B0aW9uPE0sIFI+IHt9XG5cbi8qKlxuICogQHN1bW1hcnkgU2VsZWN0IE9wdGlvbiBJbnRlcmZhY2VcbiAqIEBkZXNjcmlwdGlvbiBFeHBvc2VzIHRoZSByZW1haW5pbmcgb3B0aW9ucyBhZnRlciBhIFNFTEVDVFxuICpcbiAqIEBpbnRlcmZhY2UgU2VsZWN0T3B0aW9uXG4gKiBAZXh0ZW5kcyBGcm9tT3B0aW9uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmNvcmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RPcHRpb248TSBleHRlbmRzIE1vZGVsLCBSPiBleHRlbmRzIEZyb21PcHRpb248TSwgUj4ge1xuICBkaXN0aW5jdDxTIGV4dGVuZHMgU2VsZWN0U2VsZWN0b3I8TT4+KHNlbGVjdG9yOiBTKTogRGlzdGluY3RPcHRpb248TSwgTVtTXVtdPjtcblxuICBtYXg8UyBleHRlbmRzIFNlbGVjdFNlbGVjdG9yPE0+PihzZWxlY3RvcjogUyk6IE1heE9wdGlvbjxNLCBNW1NdPjtcblxuICBtaW48UyBleHRlbmRzIFNlbGVjdFNlbGVjdG9yPE0+PihzZWxlY3RvcjogUyk6IE1pbk9wdGlvbjxNLCBNW1NdPjtcblxuICBjb3VudDxTIGV4dGVuZHMgU2VsZWN0U2VsZWN0b3I8TT4+KHNlbGVjdG9yPzogUyk6IENvdW50T3B0aW9uPE0sIG51bWJlcj47XG59XG5cbi8qKlxuICogQHN1bW1hcnkgSW50byBPcHRpb24gSW50ZXJmYWNlXG4gKiBAZGVzY3JpcHRpb24gRXhwb3NlcyB0aGUgcmVtYWluaW5nIG9wdGlvbnMgYWZ0ZXIgYW4gSU5UT1xuICpcbiAqIEBpbnRlcmZhY2UgSW50b09wdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpjb3JlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50b09wdGlvbjxNIGV4dGVuZHMgTW9kZWwsIFI+IHtcbiAgdmFsdWVzKC4uLm1vZGVsczogTVtdKTogRXhlY3V0b3I8Uj47XG5cbiAgd2hlcmUoY29uZGl0aW9uOiBDb25kaXRpb248TT4pOiBFeGVjdXRvcjxSPjtcbn1cbi8qKlxuICogQHN1bW1hcnkgVmFsdWVzdCBPcHRpb24gSW50ZXJmYWNlXG4gKiBAZGVzY3JpcHRpb24gRXhwb3NlcyB0aGUgcmVtYWluaW5nIG9wdGlvbnMgYWZ0ZXIgYSBWQUxVRVNcbiAqXG4gKiBAaW50ZXJmYWNlIFZhbHVlc09wdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpjb3JlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmFsdWVzT3B0aW9uPE0gZXh0ZW5kcyBNb2RlbD4gZXh0ZW5kcyBFeGVjdXRvcjxNPiB7fVxuLyoqXG4gKiBAc3VtbWFyeSBJbnNlcnQgT3B0aW9uIEludGVyZmFjZVxuICogQGRlc2NyaXB0aW9uIEV4cG9zZXMgdGhlIHJlbWFpbmluZyBvcHRpb25zIGFmdGVyIGFuIElOU0VSVFxuICpcbiAqIEBpbnRlcmZhY2UgSW5zZXJ0T3B0aW9uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmNvcmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnNlcnRPcHRpb248TSBleHRlbmRzIE1vZGVsLCBSID0gdm9pZD4ge1xuICAvKipcbiAgICogQHN1bW1hcnkgc2VsZWN0cyB0aGUgdGFibGUgdG8gaW5zZXJ0IHJlY29yZHMgaW50b1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IENvbnN0cnVjdG9yfSB0YWJsZVxuICAgKiBAbWV0aG9kXG4gICAqL1xuICBpbnRvKHRhYmxlOiBDb25zdHJ1Y3RvcjxNPik6IEludG9PcHRpb248TSwgUj47XG59XG5cbi8qKlxuICogQHN1bW1hcnkge0BsaW5rIE9wZXJhdG9yfSBPcHRpb24gSW50ZXJmYWNlXG4gKiBAZGVzY3JpcHRpb24gRXhwb3NlcyB0aGUgYXZhaWxhYmxlIG9wZXJhdG9ycyBmb3IgYSB7QGxpbmsgQ29uZGl0aW9ufVxuICpcbiAqIEBpbnRlcmZhY2UgQXR0cmlidXRlT3B0aW9uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmNvcmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdHRyaWJ1dGVPcHRpb248TSBleHRlbmRzIE1vZGVsPiB7XG4gIC8qKlxuICAgKiBAc3VtbWFyeSBUZXN0IGVxdWFsaXR5XG4gICAqXG4gICAqIEBwYXJhbSB7YW55fSB2YWwgdGhlIHZhbHVlIHRvIHRlc3RcbiAgICogQG1ldGhvZFxuICAgKi9cbiAgZXEodmFsOiBhbnkpOiBDb25kaXRpb248TT47XG4gIC8qKlxuICAgKiBAc3VtbWFyeSBUZXN0IGRpZmZlcmVuY2VcbiAgICpcbiAgICogQHBhcmFtIHthbnl9IHZhbCB0aGUgdmFsdWUgdG8gdGVzdFxuICAgKiBAbWV0aG9kXG4gICAqL1xuICBkaWYodmFsOiBhbnkpOiBDb25kaXRpb248TT47XG4gIC8qKlxuICAgKiBAc3VtbWFyeSBUZXN0IGdyZWF0ZXIgdGhhblxuICAgKlxuICAgKiBAcGFyYW0ge2FueX0gdmFsIHRoZSB2YWx1ZSB0byB0ZXN0XG4gICAqIEBtZXRob2RcbiAgICovXG4gIGd0KHZhbDogYW55KTogQ29uZGl0aW9uPE0+O1xuICAvKipcbiAgICogQHN1bW1hcnkgVGVzdCBsb3dlciB0aGFuXG4gICAqXG4gICAqIEBwYXJhbSB7YW55fSB2YWwgdGhlIHZhbHVlIHRvIHRlc3RcbiAgICogQG1ldGhvZFxuICAgKi9cbiAgbHQodmFsOiBhbnkpOiBDb25kaXRpb248TT47XG4gIC8qKlxuICAgKiBAc3VtbWFyeSBUZXN0IGdyZWF0ZXIgb3IgZXF1YWwgdG9cbiAgICpcbiAgICogQHBhcmFtIHthbnl9IHZhbCB0aGUgdmFsdWUgdG8gdGVzdFxuICAgKiBAbWV0aG9kXG4gICAqL1xuICBndGUodmFsOiBhbnkpOiBDb25kaXRpb248TT47XG4gIC8qKlxuICAgKiBAc3VtbWFyeSBUZXN0IGxvd2VyIG9yIGVxdWFsIHRvXG4gICAqXG4gICAqIEBwYXJhbSB7YW55fSB2YWwgdGhlIHZhbHVlIHRvIHRlc3RcbiAgICogQG1ldGhvZFxuICAgKi9cbiAgbHRlKHZhbDogYW55KTogQ29uZGl0aW9uPE0+O1xuICAvKipcbiAgICogQHN1bW1hcnkgVGVzdCB2YWx1ZSBpbiBhIHJhbmdlIG9mIHZhbHVlc1xuICAgKiBAcGFyYW0ge2FueVtdfSB2YWxcbiAgICovXG4gIGluKHZhbDogYW55W10pOiBDb25kaXRpb248TT47XG4gIC8qKlxuICAgKiBAc3VtbWFyeSBUZXN0IG1hdGNoZXMge0BsaW5rIFJlZ0V4cH1cbiAgICpcbiAgICogQHBhcmFtIHthbnl9IHZhbCB0aGUgdmFsdWUgdG8gdGVzdFxuICAgKiBAbWV0aG9kXG4gICAqL1xuICByZWdleHAodmFsOiBzdHJpbmcgfCBSZWdFeHApOiBDb25kaXRpb248TT47XG59XG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUaGUgc3RhcnRpbmcgcG9pbnQgZm9yIGNyZWF0aW5nIHF1ZXJ5IGNvbmRpdGlvbnNcbiAqIEBzdW1tYXJ5IEV4cG9zZXMgdGhlIGF2YWlsYWJsZSBvcGVyYXRpb25zIGZvciBidWlsZGluZyBkYXRhYmFzZSBxdWVyeSBjb25kaXRpb25zXG4gKiBAdGVtcGxhdGUgTSAtIFRoZSBtb2RlbCB0eXBlIHRoaXMgY29uZGl0aW9uIGJ1aWxkZXIgb3BlcmF0ZXMgb25cbiAqIEBpbnRlcmZhY2UgQ29uZGl0aW9uQnVpbGRlck9wdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpjb3JlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZGl0aW9uQnVpbGRlck9wdGlvbjxNIGV4dGVuZHMgTW9kZWw+IHtcbiAgYXR0cmlidXRlKGF0dHI6IGtleW9mIE0pOiBBdHRyaWJ1dGVPcHRpb248TT47XG59XG4iXX0=
|