@decaf-ts/for-typeorm 0.0.6
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 -0
- package/README.md +93 -0
- package/dist/for-typeorm.cjs +2553 -0
- package/dist/for-typeorm.esm.cjs +2538 -0
- package/lib/TypeORMAdapter.cjs +1129 -0
- package/lib/TypeORMAdapter.d.ts +221 -0
- package/lib/TypeORMDispatch.cjs +134 -0
- package/lib/TypeORMDispatch.d.ts +87 -0
- package/lib/TypeORMEventSubscriber.cjs +96 -0
- package/lib/TypeORMEventSubscriber.d.ts +56 -0
- package/lib/TypeORMRepository.cjs +209 -0
- package/lib/TypeORMRepository.d.ts +125 -0
- package/lib/constants.cjs +43 -0
- package/lib/constants.d.ts +39 -0
- package/lib/errors.cjs +28 -0
- package/lib/errors.d.ts +21 -0
- package/lib/esm/TypeORMAdapter.d.ts +221 -0
- package/lib/esm/TypeORMAdapter.js +1124 -0
- package/lib/esm/TypeORMDispatch.d.ts +87 -0
- package/lib/esm/TypeORMDispatch.js +130 -0
- package/lib/esm/TypeORMEventSubscriber.d.ts +56 -0
- package/lib/esm/TypeORMEventSubscriber.js +93 -0
- package/lib/esm/TypeORMRepository.d.ts +125 -0
- package/lib/esm/TypeORMRepository.js +206 -0
- package/lib/esm/constants.d.ts +39 -0
- package/lib/esm/constants.js +40 -0
- package/lib/esm/errors.d.ts +21 -0
- package/lib/esm/errors.js +24 -0
- package/lib/esm/index.d.ts +22 -0
- package/lib/esm/index.js +25 -0
- package/lib/esm/indexes/generator.d.ts +50 -0
- package/lib/esm/indexes/generator.js +95 -0
- package/lib/esm/indexes/index.d.ts +1 -0
- package/lib/esm/indexes/index.js +2 -0
- package/lib/esm/overrides/Column.d.ts +74 -0
- package/lib/esm/overrides/Column.js +70 -0
- package/lib/esm/overrides/CreateDateColumn.d.ts +2 -0
- package/lib/esm/overrides/CreateDateColumn.js +9 -0
- package/lib/esm/overrides/Entity.d.ts +11 -0
- package/lib/esm/overrides/Entity.js +28 -0
- package/lib/esm/overrides/PrimaryColumn.d.ts +20 -0
- package/lib/esm/overrides/PrimaryColumn.js +53 -0
- package/lib/esm/overrides/PrimaryGeneratedColumn.d.ts +24 -0
- package/lib/esm/overrides/PrimaryGeneratedColumn.js +51 -0
- package/lib/esm/overrides/UpdateDateColumn.d.ts +2 -0
- package/lib/esm/overrides/UpdateDateColumn.js +9 -0
- package/lib/esm/overrides/utils.d.ts +2 -0
- package/lib/esm/overrides/utils.js +29 -0
- package/lib/esm/query/Paginator.d.ts +86 -0
- package/lib/esm/query/Paginator.js +124 -0
- package/lib/esm/query/Statement.d.ts +131 -0
- package/lib/esm/query/Statement.js +242 -0
- package/lib/esm/query/constants.d.ts +52 -0
- package/lib/esm/query/constants.js +74 -0
- package/lib/esm/query/index.d.ts +4 -0
- package/lib/esm/query/index.js +5 -0
- package/lib/esm/query/translate.d.ts +34 -0
- package/lib/esm/query/translate.js +42 -0
- package/lib/esm/raw/postgres.d.ts +36 -0
- package/lib/esm/raw/postgres.js +2 -0
- package/lib/esm/sequences/Sequence.d.ts +67 -0
- package/lib/esm/sequences/Sequence.js +117 -0
- package/lib/esm/sequences/index.d.ts +1 -0
- package/lib/esm/sequences/index.js +2 -0
- package/lib/esm/types.d.ts +67 -0
- package/lib/esm/types.js +28 -0
- package/lib/esm/utils.d.ts +16 -0
- package/lib/esm/utils.js +29 -0
- package/lib/index.cjs +42 -0
- package/lib/index.d.ts +22 -0
- package/lib/indexes/generator.cjs +98 -0
- package/lib/indexes/generator.d.ts +50 -0
- package/lib/indexes/index.cjs +18 -0
- package/lib/indexes/index.d.ts +1 -0
- package/lib/overrides/Column.cjs +73 -0
- package/lib/overrides/Column.d.ts +74 -0
- package/lib/overrides/CreateDateColumn.cjs +12 -0
- package/lib/overrides/CreateDateColumn.d.ts +2 -0
- package/lib/overrides/Entity.cjs +31 -0
- package/lib/overrides/Entity.d.ts +11 -0
- package/lib/overrides/PrimaryColumn.cjs +56 -0
- package/lib/overrides/PrimaryColumn.d.ts +20 -0
- package/lib/overrides/PrimaryGeneratedColumn.cjs +54 -0
- package/lib/overrides/PrimaryGeneratedColumn.d.ts +24 -0
- package/lib/overrides/UpdateDateColumn.cjs +12 -0
- package/lib/overrides/UpdateDateColumn.d.ts +2 -0
- package/lib/overrides/utils.cjs +32 -0
- package/lib/overrides/utils.d.ts +2 -0
- package/lib/query/Paginator.cjs +128 -0
- package/lib/query/Paginator.d.ts +86 -0
- package/lib/query/Statement.cjs +246 -0
- package/lib/query/Statement.d.ts +131 -0
- package/lib/query/constants.cjs +77 -0
- package/lib/query/constants.d.ts +52 -0
- package/lib/query/index.cjs +21 -0
- package/lib/query/index.d.ts +4 -0
- package/lib/query/translate.cjs +45 -0
- package/lib/query/translate.d.ts +34 -0
- package/lib/raw/postgres.cjs +3 -0
- package/lib/raw/postgres.d.ts +36 -0
- package/lib/sequences/Sequence.cjs +121 -0
- package/lib/sequences/Sequence.d.ts +67 -0
- package/lib/sequences/index.cjs +18 -0
- package/lib/sequences/index.d.ts +1 -0
- package/lib/types.cjs +31 -0
- package/lib/types.d.ts +67 -0
- package/lib/utils.cjs +32 -0
- package/lib/utils.d.ts +16 -0
- package/package.json +128 -0
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export * from "./indexes";
|
|
2
|
+
export * from "./query";
|
|
3
|
+
export * from "./sequences";
|
|
4
|
+
export * from "./TypeORMAdapter";
|
|
5
|
+
export * from "./constants";
|
|
6
|
+
export * from "./errors";
|
|
7
|
+
export * from "./TypeORMDispatch";
|
|
8
|
+
export * from "./TypeORMRepository";
|
|
9
|
+
export * from "./types";
|
|
10
|
+
export * from "./utils";
|
|
11
|
+
/**
|
|
12
|
+
* @description TypeORM integration for Decaf.ts.
|
|
13
|
+
* @summary Provides the TypeORM-backed implementation of the Decaf.ts data access abstractions, including the adapter, repository, statement builder, pagination utilities, index helpers, and type definitions. Key exports include {@link TypeORMAdapter}, {@link TypeORMRepository}, {@link TypeORMStatement}, {@link TypeORMPaginator}, and index generation utilities.
|
|
14
|
+
* @module for-typeorm
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* @description Stores the current package version.
|
|
18
|
+
* @summary The version string of the for-typeorm package.
|
|
19
|
+
* @const VERSION
|
|
20
|
+
* @memberOf module:for-typeorm
|
|
21
|
+
*/
|
|
22
|
+
export declare const VERSION = "0.0.6";
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateIndexes = generateIndexes;
|
|
4
|
+
const core_1 = require("@decaf-ts/core");
|
|
5
|
+
const constants_1 = require("./../constants.cjs");
|
|
6
|
+
const db_decorators_1 = require("@decaf-ts/db-decorators");
|
|
7
|
+
/**
|
|
8
|
+
* @description Generates a name for a CouchDB index
|
|
9
|
+
* @summary Creates a standardized name for a CouchDB index by combining name parts, compositions, and direction
|
|
10
|
+
* @param {string[]} name - Array of name parts for the index
|
|
11
|
+
* @param {OrderDirection} [direction] - Optional sort direction for the index
|
|
12
|
+
* @param {string[]} [compositions] - Optional additional attributes to include in the index name
|
|
13
|
+
* @param {string} [separator=DefaultSeparator] - The separator to use between parts of the index name
|
|
14
|
+
* @return {string} The generated index name
|
|
15
|
+
* @memberOf module:for-couchdb
|
|
16
|
+
*/
|
|
17
|
+
function generateIndexName(name, direction, compositions, separator = db_decorators_1.DefaultSeparator) {
|
|
18
|
+
return [
|
|
19
|
+
...name.map((n) => (n === constants_1.TypeORMKeys.TABLE ? "table" : n)),
|
|
20
|
+
...(compositions || []),
|
|
21
|
+
...(direction ? [direction] : []),
|
|
22
|
+
constants_1.TypeORMKeys.INDEX,
|
|
23
|
+
].join(separator);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* @description Generates CouchDB index configurations for models
|
|
27
|
+
* @summary Creates a set of CouchDB index configurations based on the metadata of the provided models
|
|
28
|
+
* @template M - The model type that extends Model
|
|
29
|
+
* @param models - Array of model constructors to generate indexes for
|
|
30
|
+
* @return {TypeORMQuery} Array of CouchDB index configurations
|
|
31
|
+
* @function generateIndexes
|
|
32
|
+
* @memberOf module:for-couchdb
|
|
33
|
+
* @mermaid
|
|
34
|
+
* sequenceDiagram
|
|
35
|
+
* participant Caller
|
|
36
|
+
* participant generateIndexes
|
|
37
|
+
* participant generateIndexName
|
|
38
|
+
* participant Repository
|
|
39
|
+
*
|
|
40
|
+
* Caller->>generateIndexes: models
|
|
41
|
+
*
|
|
42
|
+
* Note over generateIndexes: Create base table index
|
|
43
|
+
* generateIndexes->>generateIndexName: [CouchDBKeys.TABLE]
|
|
44
|
+
* generateIndexName-->>generateIndexes: tableName
|
|
45
|
+
* generateIndexes->>generateIndexes: Create table index config
|
|
46
|
+
*
|
|
47
|
+
* loop For each model
|
|
48
|
+
* generateIndexes->>Repository: Get indexes metadata
|
|
49
|
+
* Repository-->>generateIndexes: index metadata
|
|
50
|
+
*
|
|
51
|
+
* loop For each index in metadata
|
|
52
|
+
* Note over generateIndexes: Extract index properties
|
|
53
|
+
* generateIndexes->>Repository: Get table name
|
|
54
|
+
* Repository-->>generateIndexes: tableName
|
|
55
|
+
*
|
|
56
|
+
* Note over generateIndexes: Define nested generate function
|
|
57
|
+
*
|
|
58
|
+
* generateIndexes->>generateIndexes: Call generate() for default order
|
|
59
|
+
* Note over generateIndexes: Create index name and config
|
|
60
|
+
*
|
|
61
|
+
* alt Has directions
|
|
62
|
+
* loop For each direction
|
|
63
|
+
* generateIndexes->>generateIndexes: Call generate(direction)
|
|
64
|
+
* Note over generateIndexes: Create ordered index config
|
|
65
|
+
* end
|
|
66
|
+
* end
|
|
67
|
+
* end
|
|
68
|
+
* end
|
|
69
|
+
*
|
|
70
|
+
* generateIndexes-->>Caller: Array of index configurations
|
|
71
|
+
*/
|
|
72
|
+
function generateIndexes(models) {
|
|
73
|
+
const tableName = generateIndexName([constants_1.TypeORMKeys.TABLE]);
|
|
74
|
+
const indexes = {};
|
|
75
|
+
indexes[tableName] = {
|
|
76
|
+
query: ``,
|
|
77
|
+
values: [],
|
|
78
|
+
};
|
|
79
|
+
models.forEach((m) => {
|
|
80
|
+
const ind = core_1.Repository.indexes(m);
|
|
81
|
+
Object.entries(ind).forEach(([key, value]) => {
|
|
82
|
+
const k = Object.keys(value)[0];
|
|
83
|
+
let { compositions } = value[k];
|
|
84
|
+
const tableName = core_1.Repository.table(m);
|
|
85
|
+
compositions = compositions || [];
|
|
86
|
+
function generate() {
|
|
87
|
+
const name = [key, ...compositions, core_1.PersistenceKeys.INDEX].join(db_decorators_1.DefaultSeparator);
|
|
88
|
+
indexes[name] = {
|
|
89
|
+
query: `CREATE INDEX $1 ON $2 ($3);`,
|
|
90
|
+
values: [name, tableName, key],
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
generate();
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
return Object.values(indexes);
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2luZGV4ZXMvZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBa0ZBLDBDQWtDQztBQXBIRCx5Q0FLd0I7QUFDeEIsa0RBQTJDO0FBQzNDLDJEQUEyRDtBQUkzRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFTLGlCQUFpQixDQUN4QixJQUFjLEVBQ2QsU0FBMEIsRUFDMUIsWUFBdUIsRUFDdkIsU0FBUyxHQUFHLGdDQUFnQjtJQUU1QixPQUFPO1FBQ0wsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyx1QkFBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRCxHQUFHLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztRQUN2QixHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDakMsdUJBQVcsQ0FBQyxLQUFLO0tBQ2xCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3BCLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThDRztBQUNILFNBQWdCLGVBQWUsQ0FDN0IsTUFBd0I7SUFFeEIsTUFBTSxTQUFTLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyx1QkFBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDekQsTUFBTSxPQUFPLEdBQWlDLEVBQUUsQ0FBQztJQUNqRCxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUc7UUFDbkIsS0FBSyxFQUFFLEVBQUU7UUFDVCxNQUFNLEVBQUUsRUFBRTtLQUNYLENBQUM7SUFFRixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDbkIsTUFBTSxHQUFHLEdBQWtDLGlCQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUMzQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRWhDLElBQUksRUFBRSxZQUFZLEVBQUUsR0FBSSxLQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekMsTUFBTSxTQUFTLEdBQUcsaUJBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEMsWUFBWSxHQUFHLFlBQVksSUFBSSxFQUFFLENBQUM7WUFFbEMsU0FBUyxRQUFRO2dCQUNmLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUksWUFBbUIsRUFBRSxzQkFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FDckUsZ0NBQWdCLENBQ2pCLENBQUM7Z0JBRUYsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHO29CQUNkLEtBQUssRUFBRSw2QkFBNkI7b0JBQ3BDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxDQUFDO2lCQUMvQixDQUFDO1lBQ0osQ0FBQztZQUVELFFBQVEsRUFBRSxDQUFDO1FBQ2IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNoQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5kZXhNZXRhZGF0YSxcbiAgT3JkZXJEaXJlY3Rpb24sXG4gIFBlcnNpc3RlbmNlS2V5cyxcbiAgUmVwb3NpdG9yeSxcbn0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBUeXBlT1JNS2V5cyB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IERlZmF1bHRTZXBhcmF0b3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IENvbnN0cnVjdG9yLCBNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IFR5cGVPUk1RdWVyeSB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBHZW5lcmF0ZXMgYSBuYW1lIGZvciBhIENvdWNoREIgaW5kZXhcbiAqIEBzdW1tYXJ5IENyZWF0ZXMgYSBzdGFuZGFyZGl6ZWQgbmFtZSBmb3IgYSBDb3VjaERCIGluZGV4IGJ5IGNvbWJpbmluZyBuYW1lIHBhcnRzLCBjb21wb3NpdGlvbnMsIGFuZCBkaXJlY3Rpb25cbiAqIEBwYXJhbSB7c3RyaW5nW119IG5hbWUgLSBBcnJheSBvZiBuYW1lIHBhcnRzIGZvciB0aGUgaW5kZXhcbiAqIEBwYXJhbSB7T3JkZXJEaXJlY3Rpb259IFtkaXJlY3Rpb25dIC0gT3B0aW9uYWwgc29ydCBkaXJlY3Rpb24gZm9yIHRoZSBpbmRleFxuICogQHBhcmFtIHtzdHJpbmdbXX0gW2NvbXBvc2l0aW9uc10gLSBPcHRpb25hbCBhZGRpdGlvbmFsIGF0dHJpYnV0ZXMgdG8gaW5jbHVkZSBpbiB0aGUgaW5kZXggbmFtZVxuICogQHBhcmFtIHtzdHJpbmd9IFtzZXBhcmF0b3I9RGVmYXVsdFNlcGFyYXRvcl0gLSBUaGUgc2VwYXJhdG9yIHRvIHVzZSBiZXR3ZWVuIHBhcnRzIG9mIHRoZSBpbmRleCBuYW1lXG4gKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBnZW5lcmF0ZWQgaW5kZXggbmFtZVxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItY291Y2hkYlxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZUluZGV4TmFtZShcbiAgbmFtZTogc3RyaW5nW10sXG4gIGRpcmVjdGlvbj86IE9yZGVyRGlyZWN0aW9uLFxuICBjb21wb3NpdGlvbnM/OiBzdHJpbmdbXSxcbiAgc2VwYXJhdG9yID0gRGVmYXVsdFNlcGFyYXRvclxuKSB7XG4gIHJldHVybiBbXG4gICAgLi4ubmFtZS5tYXAoKG4pID0+IChuID09PSBUeXBlT1JNS2V5cy5UQUJMRSA/IFwidGFibGVcIiA6IG4pKSxcbiAgICAuLi4oY29tcG9zaXRpb25zIHx8IFtdKSxcbiAgICAuLi4oZGlyZWN0aW9uID8gW2RpcmVjdGlvbl0gOiBbXSksXG4gICAgVHlwZU9STUtleXMuSU5ERVgsXG4gIF0uam9pbihzZXBhcmF0b3IpO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBHZW5lcmF0ZXMgQ291Y2hEQiBpbmRleCBjb25maWd1cmF0aW9ucyBmb3IgbW9kZWxzXG4gKiBAc3VtbWFyeSBDcmVhdGVzIGEgc2V0IG9mIENvdWNoREIgaW5kZXggY29uZmlndXJhdGlvbnMgYmFzZWQgb24gdGhlIG1ldGFkYXRhIG9mIHRoZSBwcm92aWRlZCBtb2RlbHNcbiAqIEB0ZW1wbGF0ZSBNIC0gVGhlIG1vZGVsIHR5cGUgdGhhdCBleHRlbmRzIE1vZGVsXG4gKiBAcGFyYW0gbW9kZWxzIC0gQXJyYXkgb2YgbW9kZWwgY29uc3RydWN0b3JzIHRvIGdlbmVyYXRlIGluZGV4ZXMgZm9yXG4gKiBAcmV0dXJuIHtUeXBlT1JNUXVlcnl9IEFycmF5IG9mIENvdWNoREIgaW5kZXggY29uZmlndXJhdGlvbnNcbiAqIEBmdW5jdGlvbiBnZW5lcmF0ZUluZGV4ZXNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWNvdWNoZGJcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgQ2FsbGVyXG4gKiAgIHBhcnRpY2lwYW50IGdlbmVyYXRlSW5kZXhlc1xuICogICBwYXJ0aWNpcGFudCBnZW5lcmF0ZUluZGV4TmFtZVxuICogICBwYXJ0aWNpcGFudCBSZXBvc2l0b3J5XG4gKlxuICogICBDYWxsZXItPj5nZW5lcmF0ZUluZGV4ZXM6IG1vZGVsc1xuICpcbiAqICAgTm90ZSBvdmVyIGdlbmVyYXRlSW5kZXhlczogQ3JlYXRlIGJhc2UgdGFibGUgaW5kZXhcbiAqICAgZ2VuZXJhdGVJbmRleGVzLT4+Z2VuZXJhdGVJbmRleE5hbWU6IFtDb3VjaERCS2V5cy5UQUJMRV1cbiAqICAgZ2VuZXJhdGVJbmRleE5hbWUtLT4+Z2VuZXJhdGVJbmRleGVzOiB0YWJsZU5hbWVcbiAqICAgZ2VuZXJhdGVJbmRleGVzLT4+Z2VuZXJhdGVJbmRleGVzOiBDcmVhdGUgdGFibGUgaW5kZXggY29uZmlnXG4gKlxuICogICBsb29wIEZvciBlYWNoIG1vZGVsXG4gKiAgICAgZ2VuZXJhdGVJbmRleGVzLT4+UmVwb3NpdG9yeTogR2V0IGluZGV4ZXMgbWV0YWRhdGFcbiAqICAgICBSZXBvc2l0b3J5LS0+PmdlbmVyYXRlSW5kZXhlczogaW5kZXggbWV0YWRhdGFcbiAqXG4gKiAgICAgbG9vcCBGb3IgZWFjaCBpbmRleCBpbiBtZXRhZGF0YVxuICogICAgICAgTm90ZSBvdmVyIGdlbmVyYXRlSW5kZXhlczogRXh0cmFjdCBpbmRleCBwcm9wZXJ0aWVzXG4gKiAgICAgICBnZW5lcmF0ZUluZGV4ZXMtPj5SZXBvc2l0b3J5OiBHZXQgdGFibGUgbmFtZVxuICogICAgICAgUmVwb3NpdG9yeS0tPj5nZW5lcmF0ZUluZGV4ZXM6IHRhYmxlTmFtZVxuICpcbiAqICAgICAgIE5vdGUgb3ZlciBnZW5lcmF0ZUluZGV4ZXM6IERlZmluZSBuZXN0ZWQgZ2VuZXJhdGUgZnVuY3Rpb25cbiAqXG4gKiAgICAgICBnZW5lcmF0ZUluZGV4ZXMtPj5nZW5lcmF0ZUluZGV4ZXM6IENhbGwgZ2VuZXJhdGUoKSBmb3IgZGVmYXVsdCBvcmRlclxuICogICAgICAgTm90ZSBvdmVyIGdlbmVyYXRlSW5kZXhlczogQ3JlYXRlIGluZGV4IG5hbWUgYW5kIGNvbmZpZ1xuICpcbiAqICAgICAgIGFsdCBIYXMgZGlyZWN0aW9uc1xuICogICAgICAgICBsb29wIEZvciBlYWNoIGRpcmVjdGlvblxuICogICAgICAgICAgIGdlbmVyYXRlSW5kZXhlcy0+PmdlbmVyYXRlSW5kZXhlczogQ2FsbCBnZW5lcmF0ZShkaXJlY3Rpb24pXG4gKiAgICAgICAgICAgTm90ZSBvdmVyIGdlbmVyYXRlSW5kZXhlczogQ3JlYXRlIG9yZGVyZWQgaW5kZXggY29uZmlnXG4gKiAgICAgICAgIGVuZFxuICogICAgICAgZW5kXG4gKiAgICAgZW5kXG4gKiAgIGVuZFxuICpcbiAqICAgZ2VuZXJhdGVJbmRleGVzLS0+PkNhbGxlcjogQXJyYXkgb2YgaW5kZXggY29uZmlndXJhdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlSW5kZXhlczxNIGV4dGVuZHMgTW9kZWw+KFxuICBtb2RlbHM6IENvbnN0cnVjdG9yPE0+W11cbik6IFR5cGVPUk1RdWVyeVtdIHtcbiAgY29uc3QgdGFibGVOYW1lID0gZ2VuZXJhdGVJbmRleE5hbWUoW1R5cGVPUk1LZXlzLlRBQkxFXSk7XG4gIGNvbnN0IGluZGV4ZXM6IFJlY29yZDxzdHJpbmcsIFR5cGVPUk1RdWVyeT4gPSB7fTtcbiAgaW5kZXhlc1t0YWJsZU5hbWVdID0ge1xuICAgIHF1ZXJ5OiBgYCxcbiAgICB2YWx1ZXM6IFtdLFxuICB9O1xuXG4gIG1vZGVscy5mb3JFYWNoKChtKSA9PiB7XG4gICAgY29uc3QgaW5kOiBSZWNvcmQ8c3RyaW5nLCBJbmRleE1ldGFkYXRhPiA9IFJlcG9zaXRvcnkuaW5kZXhlcyhtKTtcbiAgICBPYmplY3QuZW50cmllcyhpbmQpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgY29uc3QgayA9IE9iamVjdC5rZXlzKHZhbHVlKVswXTtcblxuICAgICAgbGV0IHsgY29tcG9zaXRpb25zIH0gPSAodmFsdWUgYXMgYW55KVtrXTtcbiAgICAgIGNvbnN0IHRhYmxlTmFtZSA9IFJlcG9zaXRvcnkudGFibGUobSk7XG4gICAgICBjb21wb3NpdGlvbnMgPSBjb21wb3NpdGlvbnMgfHwgW107XG5cbiAgICAgIGZ1bmN0aW9uIGdlbmVyYXRlKCkge1xuICAgICAgICBjb25zdCBuYW1lID0gW2tleSwgLi4uKGNvbXBvc2l0aW9ucyBhcyBbXSksIFBlcnNpc3RlbmNlS2V5cy5JTkRFWF0uam9pbihcbiAgICAgICAgICBEZWZhdWx0U2VwYXJhdG9yXG4gICAgICAgICk7XG5cbiAgICAgICAgaW5kZXhlc1tuYW1lXSA9IHtcbiAgICAgICAgICBxdWVyeTogYENSRUFURSBJTkRFWCAkMSBPTiAkMiAoJDMpO2AsXG4gICAgICAgICAgdmFsdWVzOiBbbmFtZSwgdGFibGVOYW1lLCBrZXldLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBnZW5lcmF0ZSgpO1xuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIE9iamVjdC52YWx1ZXMoaW5kZXhlcyk7XG59XG4iXX0=
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Constructor, Model } from "@decaf-ts/decorator-validation";
|
|
2
|
+
import { TypeORMQuery } from "../types";
|
|
3
|
+
/**
|
|
4
|
+
* @description Generates CouchDB index configurations for models
|
|
5
|
+
* @summary Creates a set of CouchDB index configurations based on the metadata of the provided models
|
|
6
|
+
* @template M - The model type that extends Model
|
|
7
|
+
* @param models - Array of model constructors to generate indexes for
|
|
8
|
+
* @return {TypeORMQuery} Array of CouchDB index configurations
|
|
9
|
+
* @function generateIndexes
|
|
10
|
+
* @memberOf module:for-couchdb
|
|
11
|
+
* @mermaid
|
|
12
|
+
* sequenceDiagram
|
|
13
|
+
* participant Caller
|
|
14
|
+
* participant generateIndexes
|
|
15
|
+
* participant generateIndexName
|
|
16
|
+
* participant Repository
|
|
17
|
+
*
|
|
18
|
+
* Caller->>generateIndexes: models
|
|
19
|
+
*
|
|
20
|
+
* Note over generateIndexes: Create base table index
|
|
21
|
+
* generateIndexes->>generateIndexName: [CouchDBKeys.TABLE]
|
|
22
|
+
* generateIndexName-->>generateIndexes: tableName
|
|
23
|
+
* generateIndexes->>generateIndexes: Create table index config
|
|
24
|
+
*
|
|
25
|
+
* loop For each model
|
|
26
|
+
* generateIndexes->>Repository: Get indexes metadata
|
|
27
|
+
* Repository-->>generateIndexes: index metadata
|
|
28
|
+
*
|
|
29
|
+
* loop For each index in metadata
|
|
30
|
+
* Note over generateIndexes: Extract index properties
|
|
31
|
+
* generateIndexes->>Repository: Get table name
|
|
32
|
+
* Repository-->>generateIndexes: tableName
|
|
33
|
+
*
|
|
34
|
+
* Note over generateIndexes: Define nested generate function
|
|
35
|
+
*
|
|
36
|
+
* generateIndexes->>generateIndexes: Call generate() for default order
|
|
37
|
+
* Note over generateIndexes: Create index name and config
|
|
38
|
+
*
|
|
39
|
+
* alt Has directions
|
|
40
|
+
* loop For each direction
|
|
41
|
+
* generateIndexes->>generateIndexes: Call generate(direction)
|
|
42
|
+
* Note over generateIndexes: Create ordered index config
|
|
43
|
+
* end
|
|
44
|
+
* end
|
|
45
|
+
* end
|
|
46
|
+
* end
|
|
47
|
+
*
|
|
48
|
+
* generateIndexes-->>Caller: Array of index configurations
|
|
49
|
+
*/
|
|
50
|
+
export declare function generateIndexes<M extends Model>(models: Constructor<M>[]): TypeORMQuery[];
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./generator.cjs"), exports);
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXhlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsa0RBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vZ2VuZXJhdG9yXCI7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./generator";
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Column = Column;
|
|
4
|
+
const typeorm_1 = require("typeorm");
|
|
5
|
+
const utils_1 = require("./utils.cjs");
|
|
6
|
+
/**
|
|
7
|
+
* Column decorator is used to mark a specific class property as a table column.
|
|
8
|
+
* Only properties decorated with this decorator will be persisted to the database when entity be saved.
|
|
9
|
+
*/
|
|
10
|
+
function Column(typeOrOptions, options) {
|
|
11
|
+
return function (object, propertyName) {
|
|
12
|
+
// normalize parameters
|
|
13
|
+
let type;
|
|
14
|
+
if (typeof typeOrOptions === "string" ||
|
|
15
|
+
typeof typeOrOptions === "function") {
|
|
16
|
+
type = typeOrOptions;
|
|
17
|
+
}
|
|
18
|
+
else if (typeOrOptions) {
|
|
19
|
+
options = typeOrOptions;
|
|
20
|
+
type = typeOrOptions.type;
|
|
21
|
+
}
|
|
22
|
+
if (!options)
|
|
23
|
+
options = {};
|
|
24
|
+
// if type is not given explicitly then try to guess it
|
|
25
|
+
const reflectMetadataType = Reflect && Reflect.getMetadata
|
|
26
|
+
? Reflect.getMetadata("design:type", object, propertyName)
|
|
27
|
+
: undefined;
|
|
28
|
+
if (!type && reflectMetadataType)
|
|
29
|
+
// if type is not given explicitly then try to guess it
|
|
30
|
+
type = reflectMetadataType;
|
|
31
|
+
// check if there is no type in column options then set type from first function argument, or guessed one
|
|
32
|
+
if (!options.type && type)
|
|
33
|
+
options.type = type;
|
|
34
|
+
// specify HSTORE type if column is HSTORE
|
|
35
|
+
if (options.type === "hstore" && !options.hstoreType)
|
|
36
|
+
options.hstoreType = reflectMetadataType === Object ? "object" : "string";
|
|
37
|
+
if (typeof typeOrOptions === "function") {
|
|
38
|
+
// register an embedded
|
|
39
|
+
(0, typeorm_1.getMetadataArgsStorage)().embeddeds.push({
|
|
40
|
+
target: object.constructor,
|
|
41
|
+
propertyName: propertyName,
|
|
42
|
+
isArray: reflectMetadataType === Array || options.array === true,
|
|
43
|
+
prefix: options.prefix !== undefined ? options.prefix : undefined,
|
|
44
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
|
45
|
+
type: typeOrOptions,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
// register a regular column
|
|
50
|
+
// if we still don't have a type then we need to give error to user that type is required
|
|
51
|
+
if (!options.type)
|
|
52
|
+
throw new typeorm_1.ColumnTypeUndefinedError(object, propertyName);
|
|
53
|
+
// create unique
|
|
54
|
+
if (options.unique === true)
|
|
55
|
+
(0, typeorm_1.getMetadataArgsStorage)().uniques.push({
|
|
56
|
+
target: object.constructor,
|
|
57
|
+
columns: [propertyName],
|
|
58
|
+
});
|
|
59
|
+
const columns = (0, typeorm_1.getMetadataArgsStorage)().columns;
|
|
60
|
+
(0, utils_1.aggregateOrNewColumn)(object.constructor, propertyName, columns, options);
|
|
61
|
+
if (options.generated) {
|
|
62
|
+
(0, typeorm_1.getMetadataArgsStorage)().generations.push({
|
|
63
|
+
target: object.constructor,
|
|
64
|
+
propertyName: propertyName,
|
|
65
|
+
strategy: typeof options.generated === "string"
|
|
66
|
+
? options.generated
|
|
67
|
+
: "increment",
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29sdW1uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL292ZXJyaWRlcy9Db2x1bW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUEwSUEsd0JBNEVDO0FBck5ELHFDQUtpQjtBQWtCakIsdUNBQStDO0FBOEcvQzs7O0dBR0c7QUFDSCxTQUFnQixNQUFNLENBQ3BCLGFBRzJDLEVBQzNDLE9BQStDO0lBRS9DLE9BQU8sVUFBVSxNQUFjLEVBQUUsWUFBaUI7UUFDaEQsdUJBQXVCO1FBQ3ZCLElBQUksSUFBNEIsQ0FBQztRQUNqQyxJQUNFLE9BQU8sYUFBYSxLQUFLLFFBQVE7WUFDakMsT0FBTyxhQUFhLEtBQUssVUFBVSxFQUNuQyxDQUFDO1lBQ0QsSUFBSSxHQUFlLGFBQWEsQ0FBQztRQUNuQyxDQUFDO2FBQU0sSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUN6QixPQUFPLEdBQWtCLGFBQWEsQ0FBQztZQUN2QyxJQUFJLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQztRQUM1QixDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPLEdBQUcsRUFBbUIsQ0FBQztRQUU1Qyx1REFBdUQ7UUFDdkQsTUFBTSxtQkFBbUIsR0FDdkIsT0FBTyxJQUFLLE9BQWUsQ0FBQyxXQUFXO1lBQ3JDLENBQUMsQ0FBRSxPQUFlLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsWUFBWSxDQUFDO1lBQ25FLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDaEIsSUFBSSxDQUFDLElBQUksSUFBSSxtQkFBbUI7WUFDOUIsdURBQXVEO1lBQ3ZELElBQUksR0FBRyxtQkFBbUIsQ0FBQztRQUU3Qix5R0FBeUc7UUFDekcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksSUFBSTtZQUFFLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBRS9DLDBDQUEwQztRQUMxQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVU7WUFDbEQsT0FBTyxDQUFDLFVBQVUsR0FBRyxtQkFBbUIsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBRTVFLElBQUksT0FBTyxhQUFhLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDeEMsdUJBQXVCO1lBQ3ZCLElBQUEsZ0NBQXNCLEdBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO2dCQUN0QyxNQUFNLEVBQUUsTUFBTSxDQUFDLFdBQVc7Z0JBQzFCLFlBQVksRUFBRSxZQUFZO2dCQUMxQixPQUFPLEVBQUUsbUJBQW1CLEtBQUssS0FBSyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEtBQUssSUFBSTtnQkFDaEUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUNqRSxzRUFBc0U7Z0JBQ3RFLElBQUksRUFBRSxhQUF5QzthQUN4QixDQUFDLENBQUM7UUFDN0IsQ0FBQzthQUFNLENBQUM7WUFDTiw0QkFBNEI7WUFFNUIseUZBQXlGO1lBQ3pGLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSTtnQkFDZixNQUFNLElBQUksa0NBQXdCLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBRTNELGdCQUFnQjtZQUNoQixJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssSUFBSTtnQkFDekIsSUFBQSxnQ0FBc0IsR0FBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7b0JBQ3BDLE1BQU0sRUFBRSxNQUFNLENBQUMsV0FBVztvQkFDMUIsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QixDQUFDLENBQUM7WUFFTCxNQUFNLE9BQU8sR0FBRyxJQUFBLGdDQUFzQixHQUFFLENBQUMsT0FBTyxDQUFDO1lBQ2pELElBQUEsNEJBQW9CLEVBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBRXpFLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUN0QixJQUFBLGdDQUFzQixHQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztvQkFDeEMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxXQUFXO29CQUMxQixZQUFZLEVBQUUsWUFBWTtvQkFDMUIsUUFBUSxFQUNOLE9BQU8sT0FBTyxDQUFDLFNBQVMsS0FBSyxRQUFRO3dCQUNuQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVM7d0JBQ25CLENBQUMsQ0FBQyxXQUFXO2lCQUNPLENBQUMsQ0FBQztZQUM5QixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHZW5lcmF0ZWRNZXRhZGF0YUFyZ3MgfSBmcm9tIFwidHlwZW9ybS9tZXRhZGF0YS1hcmdzL0dlbmVyYXRlZE1ldGFkYXRhQXJnc1wiO1xuaW1wb3J0IHtcbiAgQ29sdW1uT3B0aW9ucyxcbiAgQ29sdW1uVHlwZSxcbiAgQ29sdW1uVHlwZVVuZGVmaW5lZEVycm9yLFxuICBnZXRNZXRhZGF0YUFyZ3NTdG9yYWdlLFxufSBmcm9tIFwidHlwZW9ybVwiO1xuaW1wb3J0IHtcbiAgU2ltcGxlQ29sdW1uVHlwZSxcbiAgU3BhdGlhbENvbHVtblR5cGUsXG4gIFdpdGhMZW5ndGhDb2x1bW5UeXBlLFxuICBXaXRoUHJlY2lzaW9uQ29sdW1uVHlwZSxcbiAgV2l0aFdpZHRoQ29sdW1uVHlwZSxcbn0gZnJvbSBcInR5cGVvcm0vZHJpdmVyL3R5cGVzL0NvbHVtblR5cGVzXCI7XG5pbXBvcnQgeyBDb2x1bW5Db21tb25PcHRpb25zIH0gZnJvbSBcInR5cGVvcm0vZGVjb3JhdG9yL29wdGlvbnMvQ29sdW1uQ29tbW9uT3B0aW9uc1wiO1xuaW1wb3J0IHsgU3BhdGlhbENvbHVtbk9wdGlvbnMgfSBmcm9tIFwidHlwZW9ybS9kZWNvcmF0b3Ivb3B0aW9ucy9TcGF0aWFsQ29sdW1uT3B0aW9uc1wiO1xuaW1wb3J0IHsgQ29sdW1uV2l0aExlbmd0aE9wdGlvbnMgfSBmcm9tIFwidHlwZW9ybS9kZWNvcmF0b3Ivb3B0aW9ucy9Db2x1bW5XaXRoTGVuZ3RoT3B0aW9uc1wiO1xuaW1wb3J0IHsgQ29sdW1uV2l0aFdpZHRoT3B0aW9ucyB9IGZyb20gXCJ0eXBlb3JtL2RlY29yYXRvci9vcHRpb25zL0NvbHVtbldpdGhXaWR0aE9wdGlvbnNcIjtcbmltcG9ydCB7IENvbHVtbk51bWVyaWNPcHRpb25zIH0gZnJvbSBcInR5cGVvcm0vZGVjb3JhdG9yL29wdGlvbnMvQ29sdW1uTnVtZXJpY09wdGlvbnNcIjtcbmltcG9ydCB7IENvbHVtbkVudW1PcHRpb25zIH0gZnJvbSBcInR5cGVvcm0vZGVjb3JhdG9yL29wdGlvbnMvQ29sdW1uRW51bU9wdGlvbnNcIjtcbmltcG9ydCB7IENvbHVtbkhzdG9yZU9wdGlvbnMgfSBmcm9tIFwidHlwZW9ybS9kZWNvcmF0b3Ivb3B0aW9ucy9Db2x1bW5Ic3RvcmVPcHRpb25zXCI7XG5pbXBvcnQgeyBDb2x1bW5FbWJlZGRlZE9wdGlvbnMgfSBmcm9tIFwidHlwZW9ybS9kZWNvcmF0b3Ivb3B0aW9ucy9Db2x1bW5FbWJlZGRlZE9wdGlvbnNcIjtcbmltcG9ydCB7IEVtYmVkZGVkTWV0YWRhdGFBcmdzIH0gZnJvbSBcInR5cGVvcm0vbWV0YWRhdGEtYXJncy9FbWJlZGRlZE1ldGFkYXRhQXJnc1wiO1xuaW1wb3J0IHsgQ29sdW1uTWV0YWRhdGFBcmdzIH0gZnJvbSBcInR5cGVvcm0vbWV0YWRhdGEtYXJncy9Db2x1bW5NZXRhZGF0YUFyZ3NcIjtcbmltcG9ydCB7IGFnZ3JlZ2F0ZU9yTmV3Q29sdW1uIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuLyoqXG4gKiBDb2x1bW4gZGVjb3JhdG9yIGlzIHVzZWQgdG8gbWFyayBhIHNwZWNpZmljIGNsYXNzIHByb3BlcnR5IGFzIGEgdGFibGUgY29sdW1uLiBPbmx5IHByb3BlcnRpZXMgZGVjb3JhdGVkIHdpdGggdGhpc1xuICogZGVjb3JhdG9yIHdpbGwgYmUgcGVyc2lzdGVkIHRvIHRoZSBkYXRhYmFzZSB3aGVuIGVudGl0eSBiZSBzYXZlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIENvbHVtbigpOiBQcm9wZXJ0eURlY29yYXRvcjtcblxuLyoqXG4gKiBDb2x1bW4gZGVjb3JhdG9yIGlzIHVzZWQgdG8gbWFyayBhIHNwZWNpZmljIGNsYXNzIHByb3BlcnR5IGFzIGEgdGFibGUgY29sdW1uLlxuICogT25seSBwcm9wZXJ0aWVzIGRlY29yYXRlZCB3aXRoIHRoaXMgZGVjb3JhdG9yIHdpbGwgYmUgcGVyc2lzdGVkIHRvIHRoZSBkYXRhYmFzZSB3aGVuIGVudGl0eSBiZSBzYXZlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIENvbHVtbihvcHRpb25zOiBDb2x1bW5PcHRpb25zKTogUHJvcGVydHlEZWNvcmF0b3I7XG5cbi8qKlxuICogQ29sdW1uIGRlY29yYXRvciBpcyB1c2VkIHRvIG1hcmsgYSBzcGVjaWZpYyBjbGFzcyBwcm9wZXJ0eSBhcyBhIHRhYmxlIGNvbHVtbi5cbiAqIE9ubHkgcHJvcGVydGllcyBkZWNvcmF0ZWQgd2l0aCB0aGlzIGRlY29yYXRvciB3aWxsIGJlIHBlcnNpc3RlZCB0byB0aGUgZGF0YWJhc2Ugd2hlbiBlbnRpdHkgYmUgc2F2ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBDb2x1bW4oXG4gIHR5cGU6IFNpbXBsZUNvbHVtblR5cGUsXG4gIG9wdGlvbnM/OiBDb2x1bW5Db21tb25PcHRpb25zXG4pOiBQcm9wZXJ0eURlY29yYXRvcjtcblxuLyoqXG4gKiBDb2x1bW4gZGVjb3JhdG9yIGlzIHVzZWQgdG8gbWFyayBhIHNwZWNpZmljIGNsYXNzIHByb3BlcnR5IGFzIGEgdGFibGUgY29sdW1uLlxuICogT25seSBwcm9wZXJ0aWVzIGRlY29yYXRlZCB3aXRoIHRoaXMgZGVjb3JhdG9yIHdpbGwgYmUgcGVyc2lzdGVkIHRvIHRoZSBkYXRhYmFzZSB3aGVuIGVudGl0eSBiZSBzYXZlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIENvbHVtbihcbiAgdHlwZTogU3BhdGlhbENvbHVtblR5cGUsXG4gIG9wdGlvbnM/OiBDb2x1bW5Db21tb25PcHRpb25zICYgU3BhdGlhbENvbHVtbk9wdGlvbnNcbik6IFByb3BlcnR5RGVjb3JhdG9yO1xuXG4vKipcbiAqIENvbHVtbiBkZWNvcmF0b3IgaXMgdXNlZCB0byBtYXJrIGEgc3BlY2lmaWMgY2xhc3MgcHJvcGVydHkgYXMgYSB0YWJsZSBjb2x1bW4uXG4gKiBPbmx5IHByb3BlcnRpZXMgZGVjb3JhdGVkIHdpdGggdGhpcyBkZWNvcmF0b3Igd2lsbCBiZSBwZXJzaXN0ZWQgdG8gdGhlIGRhdGFiYXNlIHdoZW4gZW50aXR5IGJlIHNhdmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gQ29sdW1uKFxuICB0eXBlOiBXaXRoTGVuZ3RoQ29sdW1uVHlwZSxcbiAgb3B0aW9ucz86IENvbHVtbkNvbW1vbk9wdGlvbnMgJiBDb2x1bW5XaXRoTGVuZ3RoT3B0aW9uc1xuKTogUHJvcGVydHlEZWNvcmF0b3I7XG5cbi8qKlxuICogQ29sdW1uIGRlY29yYXRvciBpcyB1c2VkIHRvIG1hcmsgYSBzcGVjaWZpYyBjbGFzcyBwcm9wZXJ0eSBhcyBhIHRhYmxlIGNvbHVtbi5cbiAqIE9ubHkgcHJvcGVydGllcyBkZWNvcmF0ZWQgd2l0aCB0aGlzIGRlY29yYXRvciB3aWxsIGJlIHBlcnNpc3RlZCB0byB0aGUgZGF0YWJhc2Ugd2hlbiBlbnRpdHkgYmUgc2F2ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBDb2x1bW4oXG4gIHR5cGU6IFdpdGhXaWR0aENvbHVtblR5cGUsXG4gIG9wdGlvbnM/OiBDb2x1bW5Db21tb25PcHRpb25zICYgQ29sdW1uV2l0aFdpZHRoT3B0aW9uc1xuKTogUHJvcGVydHlEZWNvcmF0b3I7XG5cbi8qKlxuICogQ29sdW1uIGRlY29yYXRvciBpcyB1c2VkIHRvIG1hcmsgYSBzcGVjaWZpYyBjbGFzcyBwcm9wZXJ0eSBhcyBhIHRhYmxlIGNvbHVtbi5cbiAqIE9ubHkgcHJvcGVydGllcyBkZWNvcmF0ZWQgd2l0aCB0aGlzIGRlY29yYXRvciB3aWxsIGJlIHBlcnNpc3RlZCB0byB0aGUgZGF0YWJhc2Ugd2hlbiBlbnRpdHkgYmUgc2F2ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBDb2x1bW4oXG4gIHR5cGU6IFdpdGhQcmVjaXNpb25Db2x1bW5UeXBlLFxuICBvcHRpb25zPzogQ29sdW1uQ29tbW9uT3B0aW9ucyAmIENvbHVtbk51bWVyaWNPcHRpb25zXG4pOiBQcm9wZXJ0eURlY29yYXRvcjtcblxuLyoqXG4gKiBDb2x1bW4gZGVjb3JhdG9yIGlzIHVzZWQgdG8gbWFyayBhIHNwZWNpZmljIGNsYXNzIHByb3BlcnR5IGFzIGEgdGFibGUgY29sdW1uLlxuICogT25seSBwcm9wZXJ0aWVzIGRlY29yYXRlZCB3aXRoIHRoaXMgZGVjb3JhdG9yIHdpbGwgYmUgcGVyc2lzdGVkIHRvIHRoZSBkYXRhYmFzZSB3aGVuIGVudGl0eSBiZSBzYXZlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIENvbHVtbihcbiAgdHlwZTogXCJlbnVtXCIsXG4gIG9wdGlvbnM/OiBDb2x1bW5Db21tb25PcHRpb25zICYgQ29sdW1uRW51bU9wdGlvbnNcbik6IFByb3BlcnR5RGVjb3JhdG9yO1xuXG4vKipcbiAqIENvbHVtbiBkZWNvcmF0b3IgaXMgdXNlZCB0byBtYXJrIGEgc3BlY2lmaWMgY2xhc3MgcHJvcGVydHkgYXMgYSB0YWJsZSBjb2x1bW4uXG4gKiBPbmx5IHByb3BlcnRpZXMgZGVjb3JhdGVkIHdpdGggdGhpcyBkZWNvcmF0b3Igd2lsbCBiZSBwZXJzaXN0ZWQgdG8gdGhlIGRhdGFiYXNlIHdoZW4gZW50aXR5IGJlIHNhdmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gQ29sdW1uKFxuICB0eXBlOiBcInNpbXBsZS1lbnVtXCIsXG4gIG9wdGlvbnM/OiBDb2x1bW5Db21tb25PcHRpb25zICYgQ29sdW1uRW51bU9wdGlvbnNcbik6IFByb3BlcnR5RGVjb3JhdG9yO1xuXG4vKipcbiAqIENvbHVtbiBkZWNvcmF0b3IgaXMgdXNlZCB0byBtYXJrIGEgc3BlY2lmaWMgY2xhc3MgcHJvcGVydHkgYXMgYSB0YWJsZSBjb2x1bW4uXG4gKiBPbmx5IHByb3BlcnRpZXMgZGVjb3JhdGVkIHdpdGggdGhpcyBkZWNvcmF0b3Igd2lsbCBiZSBwZXJzaXN0ZWQgdG8gdGhlIGRhdGFiYXNlIHdoZW4gZW50aXR5IGJlIHNhdmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gQ29sdW1uKFxuICB0eXBlOiBcInNldFwiLFxuICBvcHRpb25zPzogQ29sdW1uQ29tbW9uT3B0aW9ucyAmIENvbHVtbkVudW1PcHRpb25zXG4pOiBQcm9wZXJ0eURlY29yYXRvcjtcblxuLyoqXG4gKiBDb2x1bW4gZGVjb3JhdG9yIGlzIHVzZWQgdG8gbWFyayBhIHNwZWNpZmljIGNsYXNzIHByb3BlcnR5IGFzIGEgdGFibGUgY29sdW1uLlxuICogT25seSBwcm9wZXJ0aWVzIGRlY29yYXRlZCB3aXRoIHRoaXMgZGVjb3JhdG9yIHdpbGwgYmUgcGVyc2lzdGVkIHRvIHRoZSBkYXRhYmFzZSB3aGVuIGVudGl0eSBiZSBzYXZlZC5cbiAqL1xuLy8gQHRzLWV4cGVjdC1lcnJvciBzb21lIHR5cGVvcm0gdGhpbmdcbmV4cG9ydCBmdW5jdGlvbiBDb2x1bW4oXG4gIHR5cGU6IFwiaHN0b3JlXCIsXG4gIG9wdGlvbnM/OiBDb2x1bW5Db21tb25PcHRpb25zICYgQ29sdW1uSHN0b3JlT3B0aW9uc1xuKTogUHJvcGVydHlEZWNvcmF0b3I7XG5cbi8qKlxuICogQ29sdW1uIGRlY29yYXRvciBpcyB1c2VkIHRvIG1hcmsgYSBzcGVjaWZpYyBjbGFzcyBwcm9wZXJ0eSBhcyBhIHRhYmxlIGNvbHVtbi5cbiAqIE9ubHkgcHJvcGVydGllcyBkZWNvcmF0ZWQgd2l0aCB0aGlzIGRlY29yYXRvciB3aWxsIGJlIHBlcnNpc3RlZCB0byB0aGUgZGF0YWJhc2Ugd2hlbiBlbnRpdHkgYmUgc2F2ZWQuXG4gKlxuICogUHJvcGVydHkgaW4gZW50aXR5IGNhbiBiZSBtYXJrZWQgYXMgRW1iZWRkZWQsIGFuZCBvbiBwZXJzaXN0IGFsbCBjb2x1bW5zIGZyb20gdGhlIGVtYmVkZGVkIGFyZSBtYXBwZWQgdG8gdGhlXG4gKiBzaW5nbGUgdGFibGUgb2YgdGhlIGVudGl0eSB3aGVyZSBFbWJlZGRlZCBpcyB1c2VkLiBBbmQgb24gaHlkcmF0aW9uIGFsbCBjb2x1bW5zIHdoaWNoIHN1cHBvc2VkIHRvIGJlIGluIHRoZVxuICogZW1iZWRkZWQgd2lsbCBiZSBtYXBwZWQgdG8gaXQgZnJvbSB0aGUgc2luZ2xlIHRhYmxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gQ29sdW1uKFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1mdW5jdGlvbi10eXBlXG4gIHR5cGU6ICh0eXBlPzogYW55KSA9PiBGdW5jdGlvbixcbiAgb3B0aW9ucz86IENvbHVtbkVtYmVkZGVkT3B0aW9uc1xuKTogUHJvcGVydHlEZWNvcmF0b3I7XG5cbi8qKlxuICogQ29sdW1uIGRlY29yYXRvciBpcyB1c2VkIHRvIG1hcmsgYSBzcGVjaWZpYyBjbGFzcyBwcm9wZXJ0eSBhcyBhIHRhYmxlIGNvbHVtbi5cbiAqIE9ubHkgcHJvcGVydGllcyBkZWNvcmF0ZWQgd2l0aCB0aGlzIGRlY29yYXRvciB3aWxsIGJlIHBlcnNpc3RlZCB0byB0aGUgZGF0YWJhc2Ugd2hlbiBlbnRpdHkgYmUgc2F2ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBDb2x1bW4oXG4gIHR5cGVPck9wdGlvbnM/OiAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1mdW5jdGlvbi10eXBlXG4gIHwgKCh0eXBlPzogYW55KSA9PiBGdW5jdGlvbilcbiAgICB8IENvbHVtblR5cGVcbiAgICB8IChDb2x1bW5PcHRpb25zICYgQ29sdW1uRW1iZWRkZWRPcHRpb25zKSxcbiAgb3B0aW9ucz86IENvbHVtbk9wdGlvbnMgJiBDb2x1bW5FbWJlZGRlZE9wdGlvbnNcbik6IFByb3BlcnR5RGVjb3JhdG9yIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChvYmplY3Q6IG9iamVjdCwgcHJvcGVydHlOYW1lOiBhbnkpIHtcbiAgICAvLyBub3JtYWxpemUgcGFyYW1ldGVyc1xuICAgIGxldCB0eXBlOiBDb2x1bW5UeXBlIHwgdW5kZWZpbmVkO1xuICAgIGlmIChcbiAgICAgIHR5cGVvZiB0eXBlT3JPcHRpb25zID09PSBcInN0cmluZ1wiIHx8XG4gICAgICB0eXBlb2YgdHlwZU9yT3B0aW9ucyA9PT0gXCJmdW5jdGlvblwiXG4gICAgKSB7XG4gICAgICB0eXBlID0gPENvbHVtblR5cGU+dHlwZU9yT3B0aW9ucztcbiAgICB9IGVsc2UgaWYgKHR5cGVPck9wdGlvbnMpIHtcbiAgICAgIG9wdGlvbnMgPSA8Q29sdW1uT3B0aW9ucz50eXBlT3JPcHRpb25zO1xuICAgICAgdHlwZSA9IHR5cGVPck9wdGlvbnMudHlwZTtcbiAgICB9XG4gICAgaWYgKCFvcHRpb25zKSBvcHRpb25zID0ge30gYXMgQ29sdW1uT3B0aW9ucztcblxuICAgIC8vIGlmIHR5cGUgaXMgbm90IGdpdmVuIGV4cGxpY2l0bHkgdGhlbiB0cnkgdG8gZ3Vlc3MgaXRcbiAgICBjb25zdCByZWZsZWN0TWV0YWRhdGFUeXBlID1cbiAgICAgIFJlZmxlY3QgJiYgKFJlZmxlY3QgYXMgYW55KS5nZXRNZXRhZGF0YVxuICAgICAgICA/IChSZWZsZWN0IGFzIGFueSkuZ2V0TWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBvYmplY3QsIHByb3BlcnR5TmFtZSlcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgaWYgKCF0eXBlICYmIHJlZmxlY3RNZXRhZGF0YVR5cGUpXG4gICAgICAvLyBpZiB0eXBlIGlzIG5vdCBnaXZlbiBleHBsaWNpdGx5IHRoZW4gdHJ5IHRvIGd1ZXNzIGl0XG4gICAgICB0eXBlID0gcmVmbGVjdE1ldGFkYXRhVHlwZTtcblxuICAgIC8vIGNoZWNrIGlmIHRoZXJlIGlzIG5vIHR5cGUgaW4gY29sdW1uIG9wdGlvbnMgdGhlbiBzZXQgdHlwZSBmcm9tIGZpcnN0IGZ1bmN0aW9uIGFyZ3VtZW50LCBvciBndWVzc2VkIG9uZVxuICAgIGlmICghb3B0aW9ucy50eXBlICYmIHR5cGUpIG9wdGlvbnMudHlwZSA9IHR5cGU7XG5cbiAgICAvLyBzcGVjaWZ5IEhTVE9SRSB0eXBlIGlmIGNvbHVtbiBpcyBIU1RPUkVcbiAgICBpZiAob3B0aW9ucy50eXBlID09PSBcImhzdG9yZVwiICYmICFvcHRpb25zLmhzdG9yZVR5cGUpXG4gICAgICBvcHRpb25zLmhzdG9yZVR5cGUgPSByZWZsZWN0TWV0YWRhdGFUeXBlID09PSBPYmplY3QgPyBcIm9iamVjdFwiIDogXCJzdHJpbmdcIjtcblxuICAgIGlmICh0eXBlb2YgdHlwZU9yT3B0aW9ucyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAvLyByZWdpc3RlciBhbiBlbWJlZGRlZFxuICAgICAgZ2V0TWV0YWRhdGFBcmdzU3RvcmFnZSgpLmVtYmVkZGVkcy5wdXNoKHtcbiAgICAgICAgdGFyZ2V0OiBvYmplY3QuY29uc3RydWN0b3IsXG4gICAgICAgIHByb3BlcnR5TmFtZTogcHJvcGVydHlOYW1lLFxuICAgICAgICBpc0FycmF5OiByZWZsZWN0TWV0YWRhdGFUeXBlID09PSBBcnJheSB8fCBvcHRpb25zLmFycmF5ID09PSB0cnVlLFxuICAgICAgICBwcmVmaXg6IG9wdGlvbnMucHJlZml4ICE9PSB1bmRlZmluZWQgPyBvcHRpb25zLnByZWZpeCA6IHVuZGVmaW5lZCxcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtZnVuY3Rpb24tdHlwZVxuICAgICAgICB0eXBlOiB0eXBlT3JPcHRpb25zIGFzICh0eXBlPzogYW55KSA9PiBGdW5jdGlvbixcbiAgICAgIH0gYXMgRW1iZWRkZWRNZXRhZGF0YUFyZ3MpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyByZWdpc3RlciBhIHJlZ3VsYXIgY29sdW1uXG5cbiAgICAgIC8vIGlmIHdlIHN0aWxsIGRvbid0IGhhdmUgYSB0eXBlIHRoZW4gd2UgbmVlZCB0byBnaXZlIGVycm9yIHRvIHVzZXIgdGhhdCB0eXBlIGlzIHJlcXVpcmVkXG4gICAgICBpZiAoIW9wdGlvbnMudHlwZSlcbiAgICAgICAgdGhyb3cgbmV3IENvbHVtblR5cGVVbmRlZmluZWRFcnJvcihvYmplY3QsIHByb3BlcnR5TmFtZSk7XG5cbiAgICAgIC8vIGNyZWF0ZSB1bmlxdWVcbiAgICAgIGlmIChvcHRpb25zLnVuaXF1ZSA9PT0gdHJ1ZSlcbiAgICAgICAgZ2V0TWV0YWRhdGFBcmdzU3RvcmFnZSgpLnVuaXF1ZXMucHVzaCh7XG4gICAgICAgICAgdGFyZ2V0OiBvYmplY3QuY29uc3RydWN0b3IsXG4gICAgICAgICAgY29sdW1uczogW3Byb3BlcnR5TmFtZV0sXG4gICAgICAgIH0pO1xuXG4gICAgICBjb25zdCBjb2x1bW5zID0gZ2V0TWV0YWRhdGFBcmdzU3RvcmFnZSgpLmNvbHVtbnM7XG4gICAgICBhZ2dyZWdhdGVPck5ld0NvbHVtbihvYmplY3QuY29uc3RydWN0b3IsIHByb3BlcnR5TmFtZSwgY29sdW1ucywgb3B0aW9ucyk7XG5cbiAgICAgIGlmIChvcHRpb25zLmdlbmVyYXRlZCkge1xuICAgICAgICBnZXRNZXRhZGF0YUFyZ3NTdG9yYWdlKCkuZ2VuZXJhdGlvbnMucHVzaCh7XG4gICAgICAgICAgdGFyZ2V0OiBvYmplY3QuY29uc3RydWN0b3IsXG4gICAgICAgICAgcHJvcGVydHlOYW1lOiBwcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgc3RyYXRlZ3k6XG4gICAgICAgICAgICB0eXBlb2Ygb3B0aW9ucy5nZW5lcmF0ZWQgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICAgICAgPyBvcHRpb25zLmdlbmVyYXRlZFxuICAgICAgICAgICAgICA6IFwiaW5jcmVtZW50XCIsXG4gICAgICAgIH0gYXMgR2VuZXJhdGVkTWV0YWRhdGFBcmdzKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG4iXX0=
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { ColumnOptions } from "typeorm";
|
|
2
|
+
import { SimpleColumnType, SpatialColumnType, WithLengthColumnType, WithPrecisionColumnType, WithWidthColumnType } from "typeorm/driver/types/ColumnTypes";
|
|
3
|
+
import { ColumnCommonOptions } from "typeorm/decorator/options/ColumnCommonOptions";
|
|
4
|
+
import { SpatialColumnOptions } from "typeorm/decorator/options/SpatialColumnOptions";
|
|
5
|
+
import { ColumnWithLengthOptions } from "typeorm/decorator/options/ColumnWithLengthOptions";
|
|
6
|
+
import { ColumnWithWidthOptions } from "typeorm/decorator/options/ColumnWithWidthOptions";
|
|
7
|
+
import { ColumnNumericOptions } from "typeorm/decorator/options/ColumnNumericOptions";
|
|
8
|
+
import { ColumnEnumOptions } from "typeorm/decorator/options/ColumnEnumOptions";
|
|
9
|
+
import { ColumnHstoreOptions } from "typeorm/decorator/options/ColumnHstoreOptions";
|
|
10
|
+
import { ColumnEmbeddedOptions } from "typeorm/decorator/options/ColumnEmbeddedOptions";
|
|
11
|
+
/**
|
|
12
|
+
* Column decorator is used to mark a specific class property as a table column. Only properties decorated with this
|
|
13
|
+
* decorator will be persisted to the database when entity be saved.
|
|
14
|
+
*/
|
|
15
|
+
export declare function Column(): PropertyDecorator;
|
|
16
|
+
/**
|
|
17
|
+
* Column decorator is used to mark a specific class property as a table column.
|
|
18
|
+
* Only properties decorated with this decorator will be persisted to the database when entity be saved.
|
|
19
|
+
*/
|
|
20
|
+
export declare function Column(options: ColumnOptions): PropertyDecorator;
|
|
21
|
+
/**
|
|
22
|
+
* Column decorator is used to mark a specific class property as a table column.
|
|
23
|
+
* Only properties decorated with this decorator will be persisted to the database when entity be saved.
|
|
24
|
+
*/
|
|
25
|
+
export declare function Column(type: SimpleColumnType, options?: ColumnCommonOptions): PropertyDecorator;
|
|
26
|
+
/**
|
|
27
|
+
* Column decorator is used to mark a specific class property as a table column.
|
|
28
|
+
* Only properties decorated with this decorator will be persisted to the database when entity be saved.
|
|
29
|
+
*/
|
|
30
|
+
export declare function Column(type: SpatialColumnType, options?: ColumnCommonOptions & SpatialColumnOptions): PropertyDecorator;
|
|
31
|
+
/**
|
|
32
|
+
* Column decorator is used to mark a specific class property as a table column.
|
|
33
|
+
* Only properties decorated with this decorator will be persisted to the database when entity be saved.
|
|
34
|
+
*/
|
|
35
|
+
export declare function Column(type: WithLengthColumnType, options?: ColumnCommonOptions & ColumnWithLengthOptions): PropertyDecorator;
|
|
36
|
+
/**
|
|
37
|
+
* Column decorator is used to mark a specific class property as a table column.
|
|
38
|
+
* Only properties decorated with this decorator will be persisted to the database when entity be saved.
|
|
39
|
+
*/
|
|
40
|
+
export declare function Column(type: WithWidthColumnType, options?: ColumnCommonOptions & ColumnWithWidthOptions): PropertyDecorator;
|
|
41
|
+
/**
|
|
42
|
+
* Column decorator is used to mark a specific class property as a table column.
|
|
43
|
+
* Only properties decorated with this decorator will be persisted to the database when entity be saved.
|
|
44
|
+
*/
|
|
45
|
+
export declare function Column(type: WithPrecisionColumnType, options?: ColumnCommonOptions & ColumnNumericOptions): PropertyDecorator;
|
|
46
|
+
/**
|
|
47
|
+
* Column decorator is used to mark a specific class property as a table column.
|
|
48
|
+
* Only properties decorated with this decorator will be persisted to the database when entity be saved.
|
|
49
|
+
*/
|
|
50
|
+
export declare function Column(type: "enum", options?: ColumnCommonOptions & ColumnEnumOptions): PropertyDecorator;
|
|
51
|
+
/**
|
|
52
|
+
* Column decorator is used to mark a specific class property as a table column.
|
|
53
|
+
* Only properties decorated with this decorator will be persisted to the database when entity be saved.
|
|
54
|
+
*/
|
|
55
|
+
export declare function Column(type: "simple-enum", options?: ColumnCommonOptions & ColumnEnumOptions): PropertyDecorator;
|
|
56
|
+
/**
|
|
57
|
+
* Column decorator is used to mark a specific class property as a table column.
|
|
58
|
+
* Only properties decorated with this decorator will be persisted to the database when entity be saved.
|
|
59
|
+
*/
|
|
60
|
+
export declare function Column(type: "set", options?: ColumnCommonOptions & ColumnEnumOptions): PropertyDecorator;
|
|
61
|
+
/**
|
|
62
|
+
* Column decorator is used to mark a specific class property as a table column.
|
|
63
|
+
* Only properties decorated with this decorator will be persisted to the database when entity be saved.
|
|
64
|
+
*/
|
|
65
|
+
export declare function Column(type: "hstore", options?: ColumnCommonOptions & ColumnHstoreOptions): PropertyDecorator;
|
|
66
|
+
/**
|
|
67
|
+
* Column decorator is used to mark a specific class property as a table column.
|
|
68
|
+
* Only properties decorated with this decorator will be persisted to the database when entity be saved.
|
|
69
|
+
*
|
|
70
|
+
* Property in entity can be marked as Embedded, and on persist all columns from the embedded are mapped to the
|
|
71
|
+
* single table of the entity where Embedded is used. And on hydration all columns which supposed to be in the
|
|
72
|
+
* embedded will be mapped to it from the single table.
|
|
73
|
+
*/
|
|
74
|
+
export declare function Column(type: (type?: any) => Function, options?: ColumnEmbeddedOptions): PropertyDecorator;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CreateDateColumn = CreateDateColumn;
|
|
4
|
+
const typeorm_1 = require("typeorm");
|
|
5
|
+
const utils_1 = require("./utils.cjs");
|
|
6
|
+
function CreateDateColumn(options) {
|
|
7
|
+
return function (object, propertyName) {
|
|
8
|
+
const columns = (0, typeorm_1.getMetadataArgsStorage)().columns;
|
|
9
|
+
(0, utils_1.aggregateOrNewColumn)(object.constructor, propertyName, columns, options || {}, "createDate");
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3JlYXRlRGF0ZUNvbHVtbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vdmVycmlkZXMvQ3JlYXRlRGF0ZUNvbHVtbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUdBLDRDQVdDO0FBZEQscUNBQWdFO0FBQ2hFLHVDQUErQztBQUUvQyxTQUFnQixnQkFBZ0IsQ0FBQyxPQUF1QjtJQUN0RCxPQUFPLFVBQVUsTUFBVyxFQUFFLFlBQWlCO1FBQzdDLE1BQU0sT0FBTyxHQUFHLElBQUEsZ0NBQXNCLEdBQUUsQ0FBQyxPQUFPLENBQUM7UUFDakQsSUFBQSw0QkFBb0IsRUFDbEIsTUFBTSxDQUFDLFdBQVcsRUFDbEIsWUFBWSxFQUNaLE9BQU8sRUFDUCxPQUFPLElBQUksRUFBRSxFQUNiLFlBQVksQ0FDYixDQUFDO0lBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbHVtbk9wdGlvbnMsIGdldE1ldGFkYXRhQXJnc1N0b3JhZ2UgfSBmcm9tIFwidHlwZW9ybVwiO1xuaW1wb3J0IHsgYWdncmVnYXRlT3JOZXdDb2x1bW4gfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gQ3JlYXRlRGF0ZUNvbHVtbihvcHRpb25zPzogQ29sdW1uT3B0aW9ucyk6IFByb3BlcnR5RGVjb3JhdG9yIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChvYmplY3Q6IGFueSwgcHJvcGVydHlOYW1lOiBhbnkpIHtcbiAgICBjb25zdCBjb2x1bW5zID0gZ2V0TWV0YWRhdGFBcmdzU3RvcmFnZSgpLmNvbHVtbnM7XG4gICAgYWdncmVnYXRlT3JOZXdDb2x1bW4oXG4gICAgICBvYmplY3QuY29uc3RydWN0b3IsXG4gICAgICBwcm9wZXJ0eU5hbWUsXG4gICAgICBjb2x1bW5zLFxuICAgICAgb3B0aW9ucyB8fCB7fSxcbiAgICAgIFwiY3JlYXRlRGF0ZVwiXG4gICAgKTtcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Entity = Entity;
|
|
4
|
+
const typeorm_1 = require("typeorm");
|
|
5
|
+
const ObjectUtils_1 = require("typeorm/util/ObjectUtils");
|
|
6
|
+
/**
|
|
7
|
+
* This decorator is used to mark classes that will be an entity (table or document depend on database type).
|
|
8
|
+
* Database schema will be created for all classes decorated with it, and Repository can be retrieved and used for it.
|
|
9
|
+
*/
|
|
10
|
+
function Entity(nameOrOptions, maybeOptions) {
|
|
11
|
+
const options = (ObjectUtils_1.ObjectUtils.isObject(nameOrOptions)
|
|
12
|
+
? nameOrOptions
|
|
13
|
+
: maybeOptions) || {};
|
|
14
|
+
const name = typeof nameOrOptions === "string" ? nameOrOptions : options.name;
|
|
15
|
+
return function (target) {
|
|
16
|
+
const tables = (0, typeorm_1.getMetadataArgsStorage)().tables;
|
|
17
|
+
tables.push({
|
|
18
|
+
target: target,
|
|
19
|
+
name: name,
|
|
20
|
+
type: "regular",
|
|
21
|
+
orderBy: options.orderBy ? options.orderBy : undefined,
|
|
22
|
+
engine: options.engine ? options.engine : undefined,
|
|
23
|
+
database: options.database ? options.database : undefined,
|
|
24
|
+
schema: options.schema ? options.schema : undefined,
|
|
25
|
+
synchronize: options.synchronize,
|
|
26
|
+
withoutRowid: options.withoutRowid,
|
|
27
|
+
comment: options.comment ? options.comment : undefined,
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRW50aXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL292ZXJyaWRlcy9FbnRpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFvQkEsd0JBeUJDO0FBN0NELHFDQUFnRTtBQUNoRSwwREFBdUQ7QUFldkQ7OztHQUdHO0FBQ0gsU0FBZ0IsTUFBTSxDQUNwQixhQUFzQyxFQUN0QyxZQUE0QjtJQUU1QixNQUFNLE9BQU8sR0FDWCxDQUFDLHlCQUFXLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQztRQUNsQyxDQUFDLENBQUUsYUFBK0I7UUFDbEMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxQixNQUFNLElBQUksR0FBRyxPQUFPLGFBQWEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztJQUU5RSxPQUFPLFVBQVUsTUFBTTtRQUNyQixNQUFNLE1BQU0sR0FBRyxJQUFBLGdDQUFzQixHQUFFLENBQUMsTUFBTSxDQUFDO1FBQy9DLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDVixNQUFNLEVBQUUsTUFBTTtZQUNkLElBQUksRUFBRSxJQUFJO1lBQ1YsSUFBSSxFQUFFLFNBQVM7WUFDZixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUztZQUN0RCxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUztZQUNuRCxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUztZQUN6RCxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUztZQUNuRCxXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVc7WUFDaEMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZO1lBQ2xDLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTO1NBQ2xDLENBQUMsQ0FBQztJQUMxQixDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW50aXR5T3B0aW9ucywgZ2V0TWV0YWRhdGFBcmdzU3RvcmFnZSB9IGZyb20gXCJ0eXBlb3JtXCI7XG5pbXBvcnQgeyBPYmplY3RVdGlscyB9IGZyb20gXCJ0eXBlb3JtL3V0aWwvT2JqZWN0VXRpbHNcIjtcbmltcG9ydCB7IFRhYmxlTWV0YWRhdGFBcmdzIH0gZnJvbSBcInR5cGVvcm0vbWV0YWRhdGEtYXJncy9UYWJsZU1ldGFkYXRhQXJnc1wiO1xuXG4vKipcbiAqIFRoaXMgZGVjb3JhdG9yIGlzIHVzZWQgdG8gbWFyayBjbGFzc2VzIHRoYXQgd2lsbCBiZSBhbiBlbnRpdHkgKHRhYmxlIG9yIGRvY3VtZW50IGRlcGVuZCBvbiBkYXRhYmFzZSB0eXBlKS5cbiAqIERhdGFiYXNlIHNjaGVtYSB3aWxsIGJlIGNyZWF0ZWQgZm9yIGFsbCBjbGFzc2VzIGRlY29yYXRlZCB3aXRoIGl0LCBhbmQgUmVwb3NpdG9yeSBjYW4gYmUgcmV0cmlldmVkIGFuZCB1c2VkIGZvciBpdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEVudGl0eShvcHRpb25zPzogRW50aXR5T3B0aW9ucyk6IENsYXNzRGVjb3JhdG9yO1xuXG4vKipcbiAqIFRoaXMgZGVjb3JhdG9yIGlzIHVzZWQgdG8gbWFyayBjbGFzc2VzIHRoYXQgd2lsbCBiZSBhbiBlbnRpdHkgKHRhYmxlIG9yIGRvY3VtZW50IGRlcGVuZCBvbiBkYXRhYmFzZSB0eXBlKS5cbiAqIERhdGFiYXNlIHNjaGVtYSB3aWxsIGJlIGNyZWF0ZWQgZm9yIGFsbCBjbGFzc2VzIGRlY29yYXRlZCB3aXRoIGl0LCBhbmQgUmVwb3NpdG9yeSBjYW4gYmUgcmV0cmlldmVkIGFuZCB1c2VkIGZvciBpdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEVudGl0eShuYW1lPzogc3RyaW5nLCBvcHRpb25zPzogRW50aXR5T3B0aW9ucyk6IENsYXNzRGVjb3JhdG9yO1xuXG4vKipcbiAqIFRoaXMgZGVjb3JhdG9yIGlzIHVzZWQgdG8gbWFyayBjbGFzc2VzIHRoYXQgd2lsbCBiZSBhbiBlbnRpdHkgKHRhYmxlIG9yIGRvY3VtZW50IGRlcGVuZCBvbiBkYXRhYmFzZSB0eXBlKS5cbiAqIERhdGFiYXNlIHNjaGVtYSB3aWxsIGJlIGNyZWF0ZWQgZm9yIGFsbCBjbGFzc2VzIGRlY29yYXRlZCB3aXRoIGl0LCBhbmQgUmVwb3NpdG9yeSBjYW4gYmUgcmV0cmlldmVkIGFuZCB1c2VkIGZvciBpdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEVudGl0eShcbiAgbmFtZU9yT3B0aW9ucz86IHN0cmluZyB8IEVudGl0eU9wdGlvbnMsXG4gIG1heWJlT3B0aW9ucz86IEVudGl0eU9wdGlvbnNcbik6IENsYXNzRGVjb3JhdG9yIHtcbiAgY29uc3Qgb3B0aW9ucyA9XG4gICAgKE9iamVjdFV0aWxzLmlzT2JqZWN0KG5hbWVPck9wdGlvbnMpXG4gICAgICA/IChuYW1lT3JPcHRpb25zIGFzIEVudGl0eU9wdGlvbnMpXG4gICAgICA6IG1heWJlT3B0aW9ucykgfHwge307XG4gIGNvbnN0IG5hbWUgPSB0eXBlb2YgbmFtZU9yT3B0aW9ucyA9PT0gXCJzdHJpbmdcIiA/IG5hbWVPck9wdGlvbnMgOiBvcHRpb25zLm5hbWU7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICBjb25zdCB0YWJsZXMgPSBnZXRNZXRhZGF0YUFyZ3NTdG9yYWdlKCkudGFibGVzO1xuICAgIHRhYmxlcy5wdXNoKHtcbiAgICAgIHRhcmdldDogdGFyZ2V0LFxuICAgICAgbmFtZTogbmFtZSxcbiAgICAgIHR5cGU6IFwicmVndWxhclwiLFxuICAgICAgb3JkZXJCeTogb3B0aW9ucy5vcmRlckJ5ID8gb3B0aW9ucy5vcmRlckJ5IDogdW5kZWZpbmVkLFxuICAgICAgZW5naW5lOiBvcHRpb25zLmVuZ2luZSA/IG9wdGlvbnMuZW5naW5lIDogdW5kZWZpbmVkLFxuICAgICAgZGF0YWJhc2U6IG9wdGlvbnMuZGF0YWJhc2UgPyBvcHRpb25zLmRhdGFiYXNlIDogdW5kZWZpbmVkLFxuICAgICAgc2NoZW1hOiBvcHRpb25zLnNjaGVtYSA/IG9wdGlvbnMuc2NoZW1hIDogdW5kZWZpbmVkLFxuICAgICAgc3luY2hyb25pemU6IG9wdGlvbnMuc3luY2hyb25pemUsXG4gICAgICB3aXRob3V0Um93aWQ6IG9wdGlvbnMud2l0aG91dFJvd2lkLFxuICAgICAgY29tbWVudDogb3B0aW9ucy5jb21tZW50ID8gb3B0aW9ucy5jb21tZW50IDogdW5kZWZpbmVkLFxuICAgIH0gYXMgVGFibGVNZXRhZGF0YUFyZ3MpO1xuICB9O1xufVxuIl19
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { EntityOptions } from "typeorm";
|
|
2
|
+
/**
|
|
3
|
+
* This decorator is used to mark classes that will be an entity (table or document depend on database type).
|
|
4
|
+
* Database schema will be created for all classes decorated with it, and Repository can be retrieved and used for it.
|
|
5
|
+
*/
|
|
6
|
+
export declare function Entity(options?: EntityOptions): ClassDecorator;
|
|
7
|
+
/**
|
|
8
|
+
* This decorator is used to mark classes that will be an entity (table or document depend on database type).
|
|
9
|
+
* Database schema will be created for all classes decorated with it, and Repository can be retrieved and used for it.
|
|
10
|
+
*/
|
|
11
|
+
export declare function Entity(name?: string, options?: EntityOptions): ClassDecorator;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PrimaryColumn = PrimaryColumn;
|
|
4
|
+
const typeorm_1 = require("typeorm");
|
|
5
|
+
const utils_1 = require("./utils.cjs");
|
|
6
|
+
/**
|
|
7
|
+
* Column decorator is used to mark a specific class property as a table column.
|
|
8
|
+
* Only properties decorated with this decorator will be persisted to the database when entity be saved.
|
|
9
|
+
* Primary columns also creates a PRIMARY KEY for this column in a db.
|
|
10
|
+
*/
|
|
11
|
+
function PrimaryColumn(typeOrOptions, options) {
|
|
12
|
+
return function (object, propertyName) {
|
|
13
|
+
// normalize parameters
|
|
14
|
+
let type;
|
|
15
|
+
if (typeof typeOrOptions === "string" ||
|
|
16
|
+
typeOrOptions === String ||
|
|
17
|
+
typeOrOptions === Boolean ||
|
|
18
|
+
typeOrOptions === Number) {
|
|
19
|
+
type = typeOrOptions;
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
options = Object.assign({}, typeOrOptions);
|
|
23
|
+
}
|
|
24
|
+
if (!options)
|
|
25
|
+
options = {};
|
|
26
|
+
// if type is not given explicitly then try to guess it
|
|
27
|
+
const reflectMetadataType = Reflect && Reflect.getMetadata
|
|
28
|
+
? Reflect.getMetadata("design:type", object, propertyName)
|
|
29
|
+
: undefined;
|
|
30
|
+
if (!type && reflectMetadataType)
|
|
31
|
+
type = reflectMetadataType;
|
|
32
|
+
// check if there is no type in column options then set type from first function argument, or guessed one
|
|
33
|
+
if (!options.type && type)
|
|
34
|
+
options.type = type;
|
|
35
|
+
// if we still don't have a type then we need to give error to user that type is required
|
|
36
|
+
if (!options.type)
|
|
37
|
+
throw new typeorm_1.ColumnTypeUndefinedError(object, propertyName);
|
|
38
|
+
// check if column is not nullable, because we cannot allow a primary key to be nullable
|
|
39
|
+
if (options.nullable)
|
|
40
|
+
throw new typeorm_1.PrimaryColumnCannotBeNullableError(object, propertyName);
|
|
41
|
+
// explicitly set a primary to column options
|
|
42
|
+
options.primary = true;
|
|
43
|
+
const columns = (0, typeorm_1.getMetadataArgsStorage)().columns;
|
|
44
|
+
(0, utils_1.aggregateOrNewColumn)(object.constructor, propertyName, columns, options);
|
|
45
|
+
if (options.generated) {
|
|
46
|
+
(0, typeorm_1.getMetadataArgsStorage)().generations.push({
|
|
47
|
+
target: object.constructor,
|
|
48
|
+
propertyName: propertyName,
|
|
49
|
+
strategy: typeof options.generated === "string"
|
|
50
|
+
? options.generated
|
|
51
|
+
: "increment",
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJpbWFyeUNvbHVtbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vdmVycmlkZXMvUHJpbWFyeUNvbHVtbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXlDQSxzQ0FxREM7QUE5RkQscUNBTWlCO0FBR2pCLHVDQUErQztBQTJCL0M7Ozs7R0FJRztBQUNILFNBQWdCLGFBQWEsQ0FDM0IsYUFBaUQsRUFDakQsT0FBOEI7SUFFOUIsT0FBTyxVQUFVLE1BQVcsRUFBRSxZQUFpQjtRQUM3Qyx1QkFBdUI7UUFDdkIsSUFBSSxJQUE0QixDQUFDO1FBQ2pDLElBQ0UsT0FBTyxhQUFhLEtBQUssUUFBUTtZQUNqQyxhQUFhLEtBQUssTUFBTTtZQUN4QixhQUFhLEtBQUssT0FBTztZQUN6QixhQUFhLEtBQUssTUFBTSxFQUN4QixDQUFDO1lBQ0QsSUFBSSxHQUFHLGFBQTJCLENBQUM7UUFDckMsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQXdCLGFBQWEsQ0FBQyxDQUFDO1FBQ25FLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU8sR0FBRyxFQUEwQixDQUFDO1FBRW5ELHVEQUF1RDtRQUN2RCxNQUFNLG1CQUFtQixHQUN2QixPQUFPLElBQUssT0FBZSxDQUFDLFdBQVc7WUFDckMsQ0FBQyxDQUFFLE9BQWUsQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSxZQUFZLENBQUM7WUFDbkUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNoQixJQUFJLENBQUMsSUFBSSxJQUFJLG1CQUFtQjtZQUFFLElBQUksR0FBRyxtQkFBbUIsQ0FBQztRQUU3RCx5R0FBeUc7UUFDekcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksSUFBSTtZQUFFLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBRS9DLHlGQUF5RjtRQUN6RixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUk7WUFBRSxNQUFNLElBQUksa0NBQXdCLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBRTVFLHdGQUF3RjtRQUN4RixJQUFJLE9BQU8sQ0FBQyxRQUFRO1lBQ2xCLE1BQU0sSUFBSSw0Q0FBa0MsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFckUsNkNBQTZDO1FBQzdDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBRXZCLE1BQU0sT0FBTyxHQUFHLElBQUEsZ0NBQXNCLEdBQUUsQ0FBQyxPQUFPLENBQUM7UUFDakQsSUFBQSw0QkFBb0IsRUFBQyxNQUFNLENBQUMsV0FBVyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFekUsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDdEIsSUFBQSxnQ0FBc0IsR0FBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7Z0JBQ3hDLE1BQU0sRUFBRSxNQUFNLENBQUMsV0FBVztnQkFDMUIsWUFBWSxFQUFFLFlBQVk7Z0JBQzFCLFFBQVEsRUFDTixPQUFPLE9BQU8sQ0FBQyxTQUFTLEtBQUssUUFBUTtvQkFDbkMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTO29CQUNuQixDQUFDLENBQUMsV0FBVzthQUNPLENBQUMsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbHVtbk9wdGlvbnMsXG4gIENvbHVtblR5cGUsXG4gIENvbHVtblR5cGVVbmRlZmluZWRFcnJvcixcbiAgZ2V0TWV0YWRhdGFBcmdzU3RvcmFnZSxcbiAgUHJpbWFyeUNvbHVtbkNhbm5vdEJlTnVsbGFibGVFcnJvcixcbn0gZnJvbSBcInR5cGVvcm1cIjtcbmltcG9ydCB7IENvbHVtbk1ldGFkYXRhQXJncyB9IGZyb20gXCJ0eXBlb3JtL21ldGFkYXRhLWFyZ3MvQ29sdW1uTWV0YWRhdGFBcmdzXCI7XG5pbXBvcnQgeyBHZW5lcmF0ZWRNZXRhZGF0YUFyZ3MgfSBmcm9tIFwidHlwZW9ybS9tZXRhZGF0YS1hcmdzL0dlbmVyYXRlZE1ldGFkYXRhQXJnc1wiO1xuaW1wb3J0IHsgYWdncmVnYXRlT3JOZXdDb2x1bW4gfSBmcm9tIFwiLi91dGlsc1wiO1xuXG4vKipcbiAqIERlc2NyaWJlcyBhbGwgcHJpbWFyeSBrZXkgY29sdW1uJ3Mgb3B0aW9ucy5cbiAqIElmIHNwZWNpZmllZCwgdGhlIG51bGxhYmxlIGZpZWxkIG11c3QgYmUgc2V0IHRvIGZhbHNlLlxuICovXG5leHBvcnQgdHlwZSBQcmltYXJ5Q29sdW1uT3B0aW9ucyA9IENvbHVtbk9wdGlvbnMgJiB7IG51bGxhYmxlPzogZmFsc2UgfTtcblxuLyoqXG4gKiBDb2x1bW4gZGVjb3JhdG9yIGlzIHVzZWQgdG8gbWFyayBhIHNwZWNpZmljIGNsYXNzIHByb3BlcnR5IGFzIGEgdGFibGUgY29sdW1uLlxuICogT25seSBwcm9wZXJ0aWVzIGRlY29yYXRlZCB3aXRoIHRoaXMgZGVjb3JhdG9yIHdpbGwgYmUgcGVyc2lzdGVkIHRvIHRoZSBkYXRhYmFzZSB3aGVuIGVudGl0eSBiZSBzYXZlZC5cbiAqIFByaW1hcnkgY29sdW1ucyBhbHNvIGNyZWF0ZXMgYSBQUklNQVJZIEtFWSBmb3IgdGhpcyBjb2x1bW4gaW4gYSBkYi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFByaW1hcnlDb2x1bW4oXG4gIG9wdGlvbnM/OiBQcmltYXJ5Q29sdW1uT3B0aW9uc1xuKTogUHJvcGVydHlEZWNvcmF0b3I7XG5cbi8qKlxuICogQ29sdW1uIGRlY29yYXRvciBpcyB1c2VkIHRvIG1hcmsgYSBzcGVjaWZpYyBjbGFzcyBwcm9wZXJ0eSBhcyBhIHRhYmxlIGNvbHVtbi5cbiAqIE9ubHkgcHJvcGVydGllcyBkZWNvcmF0ZWQgd2l0aCB0aGlzIGRlY29yYXRvciB3aWxsIGJlIHBlcnNpc3RlZCB0byB0aGUgZGF0YWJhc2Ugd2hlbiBlbnRpdHkgYmUgc2F2ZWQuXG4gKiBQcmltYXJ5IGNvbHVtbnMgYWxzbyBjcmVhdGVzIGEgUFJJTUFSWSBLRVkgZm9yIHRoaXMgY29sdW1uIGluIGEgZGIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBQcmltYXJ5Q29sdW1uKFxuICB0eXBlPzogQ29sdW1uVHlwZSxcbiAgb3B0aW9ucz86IFByaW1hcnlDb2x1bW5PcHRpb25zXG4pOiBQcm9wZXJ0eURlY29yYXRvcjtcblxuLyoqXG4gKiBDb2x1bW4gZGVjb3JhdG9yIGlzIHVzZWQgdG8gbWFyayBhIHNwZWNpZmljIGNsYXNzIHByb3BlcnR5IGFzIGEgdGFibGUgY29sdW1uLlxuICogT25seSBwcm9wZXJ0aWVzIGRlY29yYXRlZCB3aXRoIHRoaXMgZGVjb3JhdG9yIHdpbGwgYmUgcGVyc2lzdGVkIHRvIHRoZSBkYXRhYmFzZSB3aGVuIGVudGl0eSBiZSBzYXZlZC5cbiAqIFByaW1hcnkgY29sdW1ucyBhbHNvIGNyZWF0ZXMgYSBQUklNQVJZIEtFWSBmb3IgdGhpcyBjb2x1bW4gaW4gYSBkYi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFByaW1hcnlDb2x1bW4oXG4gIHR5cGVPck9wdGlvbnM/OiBDb2x1bW5UeXBlIHwgUHJpbWFyeUNvbHVtbk9wdGlvbnMsXG4gIG9wdGlvbnM/OiBQcmltYXJ5Q29sdW1uT3B0aW9uc1xuKTogUHJvcGVydHlEZWNvcmF0b3Ige1xuICByZXR1cm4gZnVuY3Rpb24gKG9iamVjdDogYW55LCBwcm9wZXJ0eU5hbWU6IGFueSkge1xuICAgIC8vIG5vcm1hbGl6ZSBwYXJhbWV0ZXJzXG4gICAgbGV0IHR5cGU6IENvbHVtblR5cGUgfCB1bmRlZmluZWQ7XG4gICAgaWYgKFxuICAgICAgdHlwZW9mIHR5cGVPck9wdGlvbnMgPT09IFwic3RyaW5nXCIgfHxcbiAgICAgIHR5cGVPck9wdGlvbnMgPT09IFN0cmluZyB8fFxuICAgICAgdHlwZU9yT3B0aW9ucyA9PT0gQm9vbGVhbiB8fFxuICAgICAgdHlwZU9yT3B0aW9ucyA9PT0gTnVtYmVyXG4gICAgKSB7XG4gICAgICB0eXBlID0gdHlwZU9yT3B0aW9ucyBhcyBDb2x1bW5UeXBlO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgPFByaW1hcnlDb2x1bW5PcHRpb25zPnR5cGVPck9wdGlvbnMpO1xuICAgIH1cbiAgICBpZiAoIW9wdGlvbnMpIG9wdGlvbnMgPSB7fSBhcyBQcmltYXJ5Q29sdW1uT3B0aW9ucztcblxuICAgIC8vIGlmIHR5cGUgaXMgbm90IGdpdmVuIGV4cGxpY2l0bHkgdGhlbiB0cnkgdG8gZ3Vlc3MgaXRcbiAgICBjb25zdCByZWZsZWN0TWV0YWRhdGFUeXBlID1cbiAgICAgIFJlZmxlY3QgJiYgKFJlZmxlY3QgYXMgYW55KS5nZXRNZXRhZGF0YVxuICAgICAgICA/IChSZWZsZWN0IGFzIGFueSkuZ2V0TWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBvYmplY3QsIHByb3BlcnR5TmFtZSlcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgaWYgKCF0eXBlICYmIHJlZmxlY3RNZXRhZGF0YVR5cGUpIHR5cGUgPSByZWZsZWN0TWV0YWRhdGFUeXBlO1xuXG4gICAgLy8gY2hlY2sgaWYgdGhlcmUgaXMgbm8gdHlwZSBpbiBjb2x1bW4gb3B0aW9ucyB0aGVuIHNldCB0eXBlIGZyb20gZmlyc3QgZnVuY3Rpb24gYXJndW1lbnQsIG9yIGd1ZXNzZWQgb25lXG4gICAgaWYgKCFvcHRpb25zLnR5cGUgJiYgdHlwZSkgb3B0aW9ucy50eXBlID0gdHlwZTtcblxuICAgIC8vIGlmIHdlIHN0aWxsIGRvbid0IGhhdmUgYSB0eXBlIHRoZW4gd2UgbmVlZCB0byBnaXZlIGVycm9yIHRvIHVzZXIgdGhhdCB0eXBlIGlzIHJlcXVpcmVkXG4gICAgaWYgKCFvcHRpb25zLnR5cGUpIHRocm93IG5ldyBDb2x1bW5UeXBlVW5kZWZpbmVkRXJyb3Iob2JqZWN0LCBwcm9wZXJ0eU5hbWUpO1xuXG4gICAgLy8gY2hlY2sgaWYgY29sdW1uIGlzIG5vdCBudWxsYWJsZSwgYmVjYXVzZSB3ZSBjYW5ub3QgYWxsb3cgYSBwcmltYXJ5IGtleSB0byBiZSBudWxsYWJsZVxuICAgIGlmIChvcHRpb25zLm51bGxhYmxlKVxuICAgICAgdGhyb3cgbmV3IFByaW1hcnlDb2x1bW5DYW5ub3RCZU51bGxhYmxlRXJyb3Iob2JqZWN0LCBwcm9wZXJ0eU5hbWUpO1xuXG4gICAgLy8gZXhwbGljaXRseSBzZXQgYSBwcmltYXJ5IHRvIGNvbHVtbiBvcHRpb25zXG4gICAgb3B0aW9ucy5wcmltYXJ5ID0gdHJ1ZTtcblxuICAgIGNvbnN0IGNvbHVtbnMgPSBnZXRNZXRhZGF0YUFyZ3NTdG9yYWdlKCkuY29sdW1ucztcbiAgICBhZ2dyZWdhdGVPck5ld0NvbHVtbihvYmplY3QuY29uc3RydWN0b3IsIHByb3BlcnR5TmFtZSwgY29sdW1ucywgb3B0aW9ucyk7XG5cbiAgICBpZiAob3B0aW9ucy5nZW5lcmF0ZWQpIHtcbiAgICAgIGdldE1ldGFkYXRhQXJnc1N0b3JhZ2UoKS5nZW5lcmF0aW9ucy5wdXNoKHtcbiAgICAgICAgdGFyZ2V0OiBvYmplY3QuY29uc3RydWN0b3IsXG4gICAgICAgIHByb3BlcnR5TmFtZTogcHJvcGVydHlOYW1lLFxuICAgICAgICBzdHJhdGVneTpcbiAgICAgICAgICB0eXBlb2Ygb3B0aW9ucy5nZW5lcmF0ZWQgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICAgID8gb3B0aW9ucy5nZW5lcmF0ZWRcbiAgICAgICAgICAgIDogXCJpbmNyZW1lbnRcIixcbiAgICAgIH0gYXMgR2VuZXJhdGVkTWV0YWRhdGFBcmdzKTtcbiAgICB9XG4gIH07XG59XG4iXX0=
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ColumnOptions, ColumnType } from "typeorm";
|
|
2
|
+
/**
|
|
3
|
+
* Describes all primary key column's options.
|
|
4
|
+
* If specified, the nullable field must be set to false.
|
|
5
|
+
*/
|
|
6
|
+
export type PrimaryColumnOptions = ColumnOptions & {
|
|
7
|
+
nullable?: false;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Column decorator is used to mark a specific class property as a table column.
|
|
11
|
+
* Only properties decorated with this decorator will be persisted to the database when entity be saved.
|
|
12
|
+
* Primary columns also creates a PRIMARY KEY for this column in a db.
|
|
13
|
+
*/
|
|
14
|
+
export declare function PrimaryColumn(options?: PrimaryColumnOptions): PropertyDecorator;
|
|
15
|
+
/**
|
|
16
|
+
* Column decorator is used to mark a specific class property as a table column.
|
|
17
|
+
* Only properties decorated with this decorator will be persisted to the database when entity be saved.
|
|
18
|
+
* Primary columns also creates a PRIMARY KEY for this column in a db.
|
|
19
|
+
*/
|
|
20
|
+
export declare function PrimaryColumn(type?: ColumnType, options?: PrimaryColumnOptions): PropertyDecorator;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PrimaryGeneratedColumn = PrimaryGeneratedColumn;
|
|
4
|
+
const ObjectUtils_1 = require("typeorm/util/ObjectUtils");
|
|
5
|
+
const typeorm_1 = require("typeorm");
|
|
6
|
+
const utils_1 = require("./utils.cjs");
|
|
7
|
+
/**
|
|
8
|
+
* Column decorator is used to mark a specific class property as a table column.
|
|
9
|
+
* Only properties decorated with this decorator will be persisted to the database when entity be saved.
|
|
10
|
+
* This column creates an integer PRIMARY COLUMN with generated set to true.
|
|
11
|
+
*/
|
|
12
|
+
function PrimaryGeneratedColumn(strategyOrOptions, maybeOptions) {
|
|
13
|
+
// normalize parameters
|
|
14
|
+
const options = {};
|
|
15
|
+
let strategy;
|
|
16
|
+
if (strategyOrOptions) {
|
|
17
|
+
if (typeof strategyOrOptions === "string")
|
|
18
|
+
strategy = strategyOrOptions;
|
|
19
|
+
if (ObjectUtils_1.ObjectUtils.isObject(strategyOrOptions)) {
|
|
20
|
+
strategy = "increment";
|
|
21
|
+
Object.assign(options, strategyOrOptions);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
strategy = "increment";
|
|
26
|
+
}
|
|
27
|
+
if (ObjectUtils_1.ObjectUtils.isObject(maybeOptions))
|
|
28
|
+
Object.assign(options, maybeOptions);
|
|
29
|
+
return function (object, propertyName) {
|
|
30
|
+
// if column type is not explicitly set then determine it based on generation strategy
|
|
31
|
+
if (!options.type) {
|
|
32
|
+
if (strategy === "increment" || strategy === "identity") {
|
|
33
|
+
options.type = Number;
|
|
34
|
+
}
|
|
35
|
+
else if (strategy === "uuid") {
|
|
36
|
+
options.type = "uuid";
|
|
37
|
+
}
|
|
38
|
+
else if (strategy === "rowid") {
|
|
39
|
+
options.type = "int";
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// explicitly set a primary and generated to column options
|
|
43
|
+
options.primary = true;
|
|
44
|
+
const columns = (0, typeorm_1.getMetadataArgsStorage)().columns;
|
|
45
|
+
(0, utils_1.aggregateOrNewColumn)(object.constructor, propertyName, columns, options);
|
|
46
|
+
// register generated metadata args
|
|
47
|
+
(0, typeorm_1.getMetadataArgsStorage)().generations.push({
|
|
48
|
+
target: object.constructor,
|
|
49
|
+
propertyName: propertyName,
|
|
50
|
+
strategy: strategy,
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJpbWFyeUdlbmVyYXRlZENvbHVtbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vdmVycmlkZXMvUHJpbWFyeUdlbmVyYXRlZENvbHVtbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXNEQSx3REEwREM7QUFoSEQsMERBQXVEO0FBSXZELHFDQUFnRTtBQUVoRSx1Q0FBK0M7QUEyQy9DOzs7O0dBSUc7QUFDSCxTQUFnQixzQkFBc0IsQ0FDcEMsaUJBT3lDLEVBQ3pDLFlBR3lDO0lBRXpDLHVCQUF1QjtJQUN2QixNQUFNLE9BQU8sR0FBa0IsRUFBRSxDQUFDO0lBQ2xDLElBQUksUUFBcUQsQ0FBQztJQUMxRCxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDdEIsSUFBSSxPQUFPLGlCQUFpQixLQUFLLFFBQVE7WUFDdkMsUUFBUSxHQUFHLGlCQUlHLENBQUM7UUFFakIsSUFBSSx5QkFBVyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7WUFDNUMsUUFBUSxHQUFHLFdBQVcsQ0FBQztZQUN2QixNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQzVDLENBQUM7SUFDSCxDQUFDO1NBQU0sQ0FBQztRQUNOLFFBQVEsR0FBRyxXQUFXLENBQUM7SUFDekIsQ0FBQztJQUNELElBQUkseUJBQVcsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO1FBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFFN0UsT0FBTyxVQUFVLE1BQVcsRUFBRSxZQUFpQjtRQUM3QyxzRkFBc0Y7UUFDdEYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsQixJQUFJLFFBQVEsS0FBSyxXQUFXLElBQUksUUFBUSxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUN4RCxPQUFPLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztZQUN4QixDQUFDO2lCQUFNLElBQUksUUFBUSxLQUFLLE1BQU0sRUFBRSxDQUFDO2dCQUMvQixPQUFPLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztZQUN4QixDQUFDO2lCQUFNLElBQUksUUFBUSxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUNoQyxPQUFPLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztZQUN2QixDQUFDO1FBQ0gsQ0FBQztRQUVELDJEQUEyRDtRQUMzRCxPQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUV2QixNQUFNLE9BQU8sR0FBRyxJQUFBLGdDQUFzQixHQUFFLENBQUMsT0FBTyxDQUFDO1FBQ2pELElBQUEsNEJBQW9CLEVBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3pFLG1DQUFtQztRQUNuQyxJQUFBLGdDQUFzQixHQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztZQUN4QyxNQUFNLEVBQUUsTUFBTSxDQUFDLFdBQVc7WUFDMUIsWUFBWSxFQUFFLFlBQVk7WUFDMUIsUUFBUSxFQUFFLFFBQVE7U0FDTSxDQUFDLENBQUM7SUFDOUIsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9iamVjdFV0aWxzIH0gZnJvbSBcInR5cGVvcm0vdXRpbC9PYmplY3RVdGlsc1wiO1xuaW1wb3J0IHsgUHJpbWFyeUdlbmVyYXRlZENvbHVtbk51bWVyaWNPcHRpb25zIH0gZnJvbSBcInR5cGVvcm0vZGVjb3JhdG9yL29wdGlvbnMvUHJpbWFyeUdlbmVyYXRlZENvbHVtbk51bWVyaWNPcHRpb25zXCI7XG5pbXBvcnQgeyBQcmltYXJ5R2VuZXJhdGVkQ29sdW1uVVVJRE9wdGlvbnMgfSBmcm9tIFwidHlwZW9ybS9kZWNvcmF0b3Ivb3B0aW9ucy9QcmltYXJ5R2VuZXJhdGVkQ29sdW1uVVVJRE9wdGlvbnNcIjtcbmltcG9ydCB7IFByaW1hcnlHZW5lcmF0ZWRDb2x1bW5JZGVudGl0eU9wdGlvbnMgfSBmcm9tIFwidHlwZW9ybS9kZWNvcmF0b3Ivb3B0aW9ucy9QcmltYXJ5R2VuZXJhdGVkQ29sdW1uSWRlbnRpdHlPcHRpb25zXCI7XG5pbXBvcnQgeyBDb2x1bW5PcHRpb25zLCBnZXRNZXRhZGF0YUFyZ3NTdG9yYWdlIH0gZnJvbSBcInR5cGVvcm1cIjtcbmltcG9ydCB7IEdlbmVyYXRlZE1ldGFkYXRhQXJncyB9IGZyb20gXCJ0eXBlb3JtL21ldGFkYXRhLWFyZ3MvR2VuZXJhdGVkTWV0YWRhdGFBcmdzXCI7XG5pbXBvcnQgeyBhZ2dyZWdhdGVPck5ld0NvbHVtbiB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbi8qKlxuICogQ29sdW1uIGRlY29yYXRvciBpcyB1c2VkIHRvIG1hcmsgYSBzcGVjaWZpYyBjbGFzcyBwcm9wZXJ0eSBhcyBhIHRhYmxlIGNvbHVtbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFByaW1hcnlHZW5lcmF0ZWRDb2x1bW4oKTogUHJvcGVydHlEZWNvcmF0b3I7XG5cbi8qKlxuICogQ29sdW1uIGRlY29yYXRvciBpcyB1c2VkIHRvIG1hcmsgYSBzcGVjaWZpYyBjbGFzcyBwcm9wZXJ0eSBhcyBhIHRhYmxlIGNvbHVtbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFByaW1hcnlHZW5lcmF0ZWRDb2x1bW4oXG4gIG9wdGlvbnM6IFByaW1hcnlHZW5lcmF0ZWRDb2x1bW5OdW1lcmljT3B0aW9uc1xuKTogUHJvcGVydHlEZWNvcmF0b3I7XG5cbi8qKlxuICogQ29sdW1uIGRlY29yYXRvciBpcyB1c2VkIHRvIG1hcmsgYSBzcGVjaWZpYyBjbGFzcyBwcm9wZXJ0eSBhcyBhIHRhYmxlIGNvbHVtbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFByaW1hcnlHZW5lcmF0ZWRDb2x1bW4oXG4gIHN0cmF0ZWd5OiBcImluY3JlbWVudFwiLFxuICBvcHRpb25zPzogUHJpbWFyeUdlbmVyYXRlZENvbHVtbk51bWVyaWNPcHRpb25zXG4pOiBQcm9wZXJ0eURlY29yYXRvcjtcblxuLyoqXG4gKiBDb2x1bW4gZGVjb3JhdG9yIGlzIHVzZWQgdG8gbWFyayBhIHNwZWNpZmljIGNsYXNzIHByb3BlcnR5IGFzIGEgdGFibGUgY29sdW1uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gUHJpbWFyeUdlbmVyYXRlZENvbHVtbihcbiAgc3RyYXRlZ3k6IFwidXVpZFwiLFxuICBvcHRpb25zPzogUHJpbWFyeUdlbmVyYXRlZENvbHVtblVVSURPcHRpb25zXG4pOiBQcm9wZXJ0eURlY29yYXRvcjtcblxuLyoqXG4gKiBDb2x1bW4gZGVjb3JhdG9yIGlzIHVzZWQgdG8gbWFyayBhIHNwZWNpZmljIGNsYXNzIHByb3BlcnR5IGFzIGEgdGFibGUgY29sdW1uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gUHJpbWFyeUdlbmVyYXRlZENvbHVtbihcbiAgc3RyYXRlZ3k6IFwicm93aWRcIixcbiAgb3B0aW9ucz86IFByaW1hcnlHZW5lcmF0ZWRDb2x1bW5VVUlET3B0aW9uc1xuKTogUHJvcGVydHlEZWNvcmF0b3I7XG5cbmV4cG9ydCBmdW5jdGlvbiBQcmltYXJ5R2VuZXJhdGVkQ29sdW1uKFxuICBzdHJhdGVneTogXCJpZGVudGl0eVwiLFxuICBvcHRpb25zPzogUHJpbWFyeUdlbmVyYXRlZENvbHVtbklkZW50aXR5T3B0aW9uc1xuKTogUHJvcGVydHlEZWNvcmF0b3I7XG5cbi8qKlxuICogQ29sdW1uIGRlY29yYXRvciBpcyB1c2VkIHRvIG1hcmsgYSBzcGVjaWZpYyBjbGFzcyBwcm9wZXJ0eSBhcyBhIHRhYmxlIGNvbHVtbi5cbiAqIE9ubHkgcHJvcGVydGllcyBkZWNvcmF0ZWQgd2l0aCB0aGlzIGRlY29yYXRvciB3aWxsIGJlIHBlcnNpc3RlZCB0byB0aGUgZGF0YWJhc2Ugd2hlbiBlbnRpdHkgYmUgc2F2ZWQuXG4gKiBUaGlzIGNvbHVtbiBjcmVhdGVzIGFuIGludGVnZXIgUFJJTUFSWSBDT0xVTU4gd2l0aCBnZW5lcmF0ZWQgc2V0IHRvIHRydWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBQcmltYXJ5R2VuZXJhdGVkQ29sdW1uKFxuICBzdHJhdGVneU9yT3B0aW9ucz86XG4gICAgfCBcImluY3JlbWVudFwiXG4gICAgfCBcInV1aWRcIlxuICAgIHwgXCJyb3dpZFwiXG4gICAgfCBcImlkZW50aXR5XCJcbiAgICB8IFByaW1hcnlHZW5lcmF0ZWRDb2x1bW5OdW1lcmljT3B0aW9uc1xuICAgIHwgUHJpbWFyeUdlbmVyYXRlZENvbHVtblVVSURPcHRpb25zXG4gICAgfCBQcmltYXJ5R2VuZXJhdGVkQ29sdW1uSWRlbnRpdHlPcHRpb25zLFxuICBtYXliZU9wdGlvbnM/OlxuICAgIHwgUHJpbWFyeUdlbmVyYXRlZENvbHVtbk51bWVyaWNPcHRpb25zXG4gICAgfCBQcmltYXJ5R2VuZXJhdGVkQ29sdW1uVVVJRE9wdGlvbnNcbiAgICB8IFByaW1hcnlHZW5lcmF0ZWRDb2x1bW5JZGVudGl0eU9wdGlvbnNcbik6IFByb3BlcnR5RGVjb3JhdG9yIHtcbiAgLy8gbm9ybWFsaXplIHBhcmFtZXRlcnNcbiAgY29uc3Qgb3B0aW9uczogQ29sdW1uT3B0aW9ucyA9IHt9O1xuICBsZXQgc3RyYXRlZ3k6IFwiaW5jcmVtZW50XCIgfCBcInV1aWRcIiB8IFwicm93aWRcIiB8IFwiaWRlbnRpdHlcIjtcbiAgaWYgKHN0cmF0ZWd5T3JPcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBzdHJhdGVneU9yT3B0aW9ucyA9PT0gXCJzdHJpbmdcIilcbiAgICAgIHN0cmF0ZWd5ID0gc3RyYXRlZ3lPck9wdGlvbnMgYXNcbiAgICAgICAgfCBcImluY3JlbWVudFwiXG4gICAgICAgIHwgXCJ1dWlkXCJcbiAgICAgICAgfCBcInJvd2lkXCJcbiAgICAgICAgfCBcImlkZW50aXR5XCI7XG5cbiAgICBpZiAoT2JqZWN0VXRpbHMuaXNPYmplY3Qoc3RyYXRlZ3lPck9wdGlvbnMpKSB7XG4gICAgICBzdHJhdGVneSA9IFwiaW5jcmVtZW50XCI7XG4gICAgICBPYmplY3QuYXNzaWduKG9wdGlvbnMsIHN0cmF0ZWd5T3JPcHRpb25zKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgc3RyYXRlZ3kgPSBcImluY3JlbWVudFwiO1xuICB9XG4gIGlmIChPYmplY3RVdGlscy5pc09iamVjdChtYXliZU9wdGlvbnMpKSBPYmplY3QuYXNzaWduKG9wdGlvbnMsIG1heWJlT3B0aW9ucyk7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChvYmplY3Q6IGFueSwgcHJvcGVydHlOYW1lOiBhbnkpIHtcbiAgICAvLyBpZiBjb2x1bW4gdHlwZSBpcyBub3QgZXhwbGljaXRseSBzZXQgdGhlbiBkZXRlcm1pbmUgaXQgYmFzZWQgb24gZ2VuZXJhdGlvbiBzdHJhdGVneVxuICAgIGlmICghb3B0aW9ucy50eXBlKSB7XG4gICAgICBpZiAoc3RyYXRlZ3kgPT09IFwiaW5jcmVtZW50XCIgfHwgc3RyYXRlZ3kgPT09IFwiaWRlbnRpdHlcIikge1xuICAgICAgICBvcHRpb25zLnR5cGUgPSBOdW1iZXI7XG4gICAgICB9IGVsc2UgaWYgKHN0cmF0ZWd5ID09PSBcInV1aWRcIikge1xuICAgICAgICBvcHRpb25zLnR5cGUgPSBcInV1aWRcIjtcbiAgICAgIH0gZWxzZSBpZiAoc3RyYXRlZ3kgPT09IFwicm93aWRcIikge1xuICAgICAgICBvcHRpb25zLnR5cGUgPSBcImludFwiO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGV4cGxpY2l0bHkgc2V0IGEgcHJpbWFyeSBhbmQgZ2VuZXJhdGVkIHRvIGNvbHVtbiBvcHRpb25zXG4gICAgb3B0aW9ucy5wcmltYXJ5ID0gdHJ1ZTtcblxuICAgIGNvbnN0IGNvbHVtbnMgPSBnZXRNZXRhZGF0YUFyZ3NTdG9yYWdlKCkuY29sdW1ucztcbiAgICBhZ2dyZWdhdGVPck5ld0NvbHVtbihvYmplY3QuY29uc3RydWN0b3IsIHByb3BlcnR5TmFtZSwgY29sdW1ucywgb3B0aW9ucyk7XG4gICAgLy8gcmVnaXN0ZXIgZ2VuZXJhdGVkIG1ldGFkYXRhIGFyZ3NcbiAgICBnZXRNZXRhZGF0YUFyZ3NTdG9yYWdlKCkuZ2VuZXJhdGlvbnMucHVzaCh7XG4gICAgICB0YXJnZXQ6IG9iamVjdC5jb25zdHJ1Y3RvcixcbiAgICAgIHByb3BlcnR5TmFtZTogcHJvcGVydHlOYW1lLFxuICAgICAgc3RyYXRlZ3k6IHN0cmF0ZWd5LFxuICAgIH0gYXMgR2VuZXJhdGVkTWV0YWRhdGFBcmdzKTtcbiAgfTtcbn1cbiJdfQ==
|