velocious 1.0.485 → 1.0.486
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/README.md +1 -0
- package/build/database/query/create-index-base.js +1 -1
- package/build/database/query/create-table-base.js +2 -2
- package/build/database/record/auditing.js +407 -0
- package/build/database/record/index.js +101 -0
- package/build/src/database/query/create-index-base.js +2 -2
- package/build/src/database/query/create-table-base.js +4 -4
- package/build/src/database/record/auditing.d.ts +156 -0
- package/build/src/database/record/auditing.d.ts.map +1 -0
- package/build/src/database/record/auditing.js +349 -0
- package/build/src/database/record/index.d.ts +69 -0
- package/build/src/database/record/index.d.ts.map +1 -1
- package/build/src/database/record/index.js +89 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/database/query/create-index-base.js +1 -1
- package/src/database/query/create-table-base.js +2 -2
- package/src/database/record/auditing.js +407 -0
- package/src/database/record/index.js +101 -0
|
@@ -90,8 +90,8 @@ export default class VelociousDatabaseQueryCreateTableBase extends QueryBase {
|
|
|
90
90
|
if (!column.getIndex())
|
|
91
91
|
continue;
|
|
92
92
|
let indexName = `index_on_`;
|
|
93
|
-
if (databaseType == "sqlite")
|
|
94
|
-
|
|
93
|
+
if (databaseType == "sqlite" || databaseType == "pgsql")
|
|
94
|
+
indexName += `${tableData.getName()}_`;
|
|
95
95
|
indexName += column.getName();
|
|
96
96
|
sql += ",";
|
|
97
97
|
const { unique, ...restIndexArgs } = column.getIndexArgs();
|
|
@@ -141,7 +141,7 @@ export default class VelociousDatabaseQueryCreateTableBase extends QueryBase {
|
|
|
141
141
|
const { unique, ...restIndexArgs } = column.getIndexArgs();
|
|
142
142
|
restArgsError(restIndexArgs);
|
|
143
143
|
let indexName = `index_on_`;
|
|
144
|
-
if (databaseType == "sqlite")
|
|
144
|
+
if (databaseType == "sqlite" || databaseType == "pgsql")
|
|
145
145
|
indexName += `${tableData.getName()}_`;
|
|
146
146
|
indexName += column.getName();
|
|
147
147
|
const createIndexArgs = {
|
|
@@ -160,4 +160,4 @@ export default class VelociousDatabaseQueryCreateTableBase extends QueryBase {
|
|
|
160
160
|
return sqls;
|
|
161
161
|
}
|
|
162
162
|
}
|
|
163
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXRhYmxlLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvcXVlcnkvY3JlYXRlLXRhYmxlLWJhc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sZUFBZSxNQUFNLHdCQUF3QixDQUFBO0FBQ3BELE9BQU8sU0FBUyxNQUFNLFdBQVcsQ0FBQTtBQUNqQyxPQUFPLGFBQWEsTUFBTSxnQ0FBZ0MsQ0FBQTtBQUMxRCxPQUFPLFNBQVMsTUFBTSx3QkFBd0IsQ0FBQTtBQUM5QyxPQUFPLFdBQVcsTUFBTSwrQkFBK0IsQ0FBQTtBQUV2RCxNQUFNLENBQUMsT0FBTyxPQUFPLHFDQUFzQyxTQUFRLFNBQVM7SUFDMUU7Ozs7Ozs7T0FPRztJQUNILFlBQVksRUFBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixHQUFHLElBQUksRUFBRSxTQUFTLEVBQUM7UUFDckUsSUFBSSxDQUFDLENBQUMsU0FBUyxZQUFZLFNBQVMsQ0FBQztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQTtRQUV0RixLQUFLLENBQUMsRUFBQyxNQUFNLEVBQUMsQ0FBQyxDQUFBO1FBQ2YsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUE7UUFDOUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFBO1FBQzVDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFBO0lBQzVCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsS0FBSztRQUNULE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQTtRQUMzQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUE7UUFDL0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBQ2pDLE1BQU0sRUFBQyxTQUFTLEVBQUMsR0FBRyxJQUFJLENB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QUFFO29CQUN4QixJQUFJLEVBQUUsU0FBUztvQkFDZixTQUFTLEVBQUUsU0FBUyxDQUFDLE9BQU8sRUFBRTtvQkFDOUIsTUFBTTtpQkFDUCxDQUFBO2dCQUNELE1BQU0sZUFBZSxHQUFHLE1BQU0sSUFBSSxlQUFlLENBQUMsZUFBZSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUE7Z0JBRTNFLEtBQUssTUFBTSxjQUFjLElBQUksZUFBZSxFQUFFLENBQUM7b0JBQzdDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUE7Z0JBQzNCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBDcmVhdGVJbmRleEJhc2UgZnJvbSBcIi4vY3JlYXRlLWluZGV4LWJhc2UuanNcIlxuaW1wb3J0IFF1ZXJ5QmFzZSBmcm9tIFwiLi9iYXNlLmpzXCJcbmltcG9ydCByZXN0QXJnc0Vycm9yIGZyb20gXCIuLi8uLi91dGlscy9yZXN0LWFyZ3MtZXJyb3IuanNcIlxuaW1wb3J0IFRhYmxlRGF0YSBmcm9tIFwiLi4vdGFibGUtZGF0YS9pbmRleC5qc1wiXG5pbXBvcnQgVGFibGVDb2x1bW4gZnJvbSBcIi4uL3RhYmxlLWRhdGEvdGFibGUtY29sdW1uLmpzXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2Npb3VzRGF0YWJhc2VRdWVyeUNyZWF0ZVRhYmxlQmFzZSBleHRlbmRzIFF1ZXJ5QmFzZSB7XG4gIC8qKlxuICAgKiBSdW5zIGNvbnN0cnVjdG9yLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2RyaXZlcnMvYmFzZS5qc1wiKS5kZWZhdWx0fSBhcmdzLmRyaXZlciAtIERhdGFiYXNlIGRyaXZlciBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtib29sZWFufSBbYXJncy5pZk5vdEV4aXN0c10gLSBXaGV0aGVyIGlmIG5vdCBleGlzdHMuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2FyZ3MuaW5kZXhJbkNyZWF0ZVRhYmxlXSAtIFdoZXRoZXIgaW5kZXggaW4gY3JlYXRlIHRhYmxlLlxuICAgKiBAcGFyYW0ge1RhYmxlRGF0YX0gYXJncy50YWJsZURhdGEgLSBUYWJsZSBkYXRhLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioe2RyaXZlciwgaWZOb3RFeGlzdHMsIGluZGV4SW5DcmVhdGVUYWJsZSA9IHRydWUsIHRhYmxlRGF0YX0pIHtcbiAgICBpZiAoISh0YWJsZURhdGEgaW5zdGFuY2VvZiBUYWJsZURhdGEpKSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHRhYmxlIGRhdGEgd2FzIGdpdmVuXCIpXG5cbiAgICBzdXBlcih7ZHJpdmVyfSlcbiAgICB0aGlzLmlmTm90RXhpc3RzID0gaWZOb3RFeGlzdHNcbiAgICB0aGlzLmluZGV4SW5DcmVhdGVUYWJsZSA9IGluZGV4SW5DcmVhdGVUYWJsZVxuICAgIHRoaXMudGFibGVEYXRhID0gdGFibGVEYXRhXG4gIH1cblxuICAvKipcbiAgICogUnVucyB0byBzcWwuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZ1tdPn0gLSBSZXNvbHZlcyB3aXRoIFNRTCBzdGF0ZW1lbnRzLlxuICAgKi9cbiAgYXN5bmMgdG9TcWwoKSB7XG4gICAgY29uc3QgZGF0YWJhc2VUeXBlID0gdGhpcy5nZXREYXRhYmFzZVR5cGUoKVxuICAgIGNvbnN0IGRyaXZlciA9IHRoaXMuZ2V0RHJpdmVyKClcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5nZXRPcHRpb25zKClcbiAgICBjb25zdCB7dGFibGVEYXRhfSA9IHRoaXNcbiAgICBjb25zdCBzcWxzID0gW11cbiAgICBjb25zdCBpZk5vdEV4aXN0cyA9IHRoaXMuaWZOb3RFeGlzdHMgfHwgdGFibGVEYXRhLmdldElmTm90RXhpc3RzKClcbiAgICBsZXQgc3FsID0gXCJcIlxuXG4gICAgaWYgKGRhdGFiYXNlVHlwZSA9PSBcIm1zc3FsXCIgJiYgaWZOb3RFeGlzdHMpIHtcbiAgICAgIHNxbCArPSBgSUYgTk9UIEVYSVNUUyhTRUxFQ1QgKiBGUk9NIFtzeXNvYmplY3RzXSBXSEVSRSBbbmFtZV0gPSAke29wdGlvbnMucXVvdGUodGFibGVEYXRhLmdldE5hbWUoKSl9IEFORCBbeHR5cGVdID0gJ1UnKSBCRUdJTiBgXG4gICAgfVxuXG4gICAgc3FsICs9IFwiQ1JFQVRFIFRBQkxFXCJcblxuICAgIGlmIChkYXRhYmFzZVR5cGUgIT0gXCJtc3NxbFwiICYmIGlmTm90RXhpc3RzKSBzcWwgKz0gXCIgSUYgTk9UIEVYSVNUU1wiXG5cbiAgICBzcWwgKz0gYCAke29wdGlvbnMucXVvdGVUYWJsZU5hbWUodGFibGVEYXRhLmdldE5hbWUoKSl9IChgXG5cbiAgICBjb25zdCB0YWJsZUxldmVsRktDb2x1bW5OYW1lcyA9IG5ldyBTZXQodGFibGVEYXRhLmdldEZvcmVpZ25LZXlzKCkubWFwKChmb3JlaWduS2V5KSA9PiBmb3JlaWduS2V5LmdldENvbHVtbk5hbWUoKSkpXG5cbiAgICBsZXQgY29sdW1uQ291bnQgPSAwXG5cbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiB0YWJsZURhdGEuZ2V0Q29sdW1ucygpKSB7XG4gICAgICBjb2x1bW5Db3VudCsrXG5cbiAgICAgIGlmIChjb2x1bW5Db3VudCA+IDEpIHNxbCArPSBcIiwgXCJcblxuICAgICAgc3FsICs9IGNvbHVtbi5nZXRTUUwoe2RyaXZlciwgZm9yQWx0ZXJUYWJsZTogZmFsc2UsIHNraXBGb3JlaWduS2V5OiB0YWJsZUxldmVsRktDb2x1bW5OYW1lcy5oYXMoY29sdW1uLmdldEFjdHVhbE5hbWUoKSl9KVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgZm9yZWlnbktleSBvZiB0YWJsZURhdGEuZ2V0Rm9yZWlnbktleXMoKSkge1xuICAgICAgc3FsICs9IFwiLCBcIlxuXG4gICAgICBpZiAoZm9yZWlnbktleS5nZXROYW1lKCkpIHtcbiAgICAgICAgc3FsICs9IGBDT05TVFJBSU5UICR7b3B0aW9ucy5xdW90ZUluZGV4TmFtZShmb3JlaWduS2V5LmdldE5hbWUoKSl9IGBcbiAgICAgIH1cblxuICAgICAgc3FsICs9IGBGT1JFSUdOIEtFWSAoJHtvcHRpb25zLnF1b3RlQ29sdW1uTmFtZShmb3JlaWduS2V5LmdldENvbHVtbk5hbWUoKSl9KWBcbiAgICAgIHNxbCArPSBgIFJFRkVSRU5DRVMgJHtvcHRpb25zLnF1b3RlVGFibGVOYW1lKGZvcmVpZ25LZXkuZ2V0UmVmZXJlbmNlZFRhYmxlTmFtZSgpKX0gKCR7b3B0aW9ucy5xdW90ZUNvbHVtbk5hbWUoZm9yZWlnbktleS5nZXRSZWZlcmVuY2VkQ29sdW1uTmFtZSgpKX0pYFxuICAgIH1cblxuICAgIGlmICh0aGlzLmluZGV4SW5DcmVhdGVUYWJsZSkge1xuICAgICAgZm9yIChjb25zdCBpbmRleCBvZiB0YWJsZURhdGEuZ2V0SW5kZXhlcygpKSB7XG4gICAgICAgIHNxbCArPSBcIixcIlxuXG4gICAgICAgIGlmIChpbmRleC5nZXRVbmlxdWUoKSkge1xuICAgICAgICAgIHNxbCArPSBcIiBVTklRVUVcIlxuICAgICAgICB9XG5cbiAgICAgICAgc3FsICs9IFwiIElOREVYXCJcblxuICAgICAgICBpZiAoaW5kZXguZ2V0TmFtZSgpKSB7XG4gICAgICAgICAgY29uc3QgaW5kZXhOYW1lID0gaW5kZXguZ2V0TmFtZSgpXG5cbiAgICAgICAgICBpZiAoIWluZGV4TmFtZSkgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgaW5kZXggbmFtZVwiKVxuXG4gICAgICAgICAgc3FsICs9IGAgJHtvcHRpb25zLnF1b3RlSW5kZXhOYW1lKGluZGV4TmFtZSl9YFxuICAgICAgICB9XG5cbiAgICAgICAgc3FsICs9IFwiIChcIlxuXG4gICAgICAgIGluZGV4LmdldENvbHVtbnMoKS5mb3JFYWNoKChjb2x1bW4sIGNvbHVtbkluZGV4KSA9PiB7XG4gICAgICAgICAgaWYgKGNvbHVtbkluZGV4ID4gMCkgc3FsICs9IFwiLCBcIlxuXG4gICAgICAgICAgaWYgKGNvbHVtbiBpbnN0YW5jZW9mIFRhYmxlQ29sdW1uKSB7XG4gICAgICAgICAgICBzcWwgKz0gZHJpdmVyLnF1b3RlQ29sdW1uKGNvbHVtbi5nZXROYW1lKCkpXG4gICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgY29sdW1uID09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHNxbCArPSBkcml2ZXIucXVvdGVDb2x1bW4oY29sdW1uKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gY29sdW1uIHR5cGU6ICR7dHlwZW9mIGNvbHVtbn1gKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcblxuICAgICAgICBzcWwgKz0gXCIpXCJcbiAgICAgIH1cblxuICAgICAgLy8gQ3JlYXRlIGluZGV4ZXMgZm9yIGFsbCBjb2x1bW5zIHdpdGggdGhlIGluZGV4IGFyZ3VtZW50XG4gICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiB0YWJsZURhdGEuZ2V0Q29sdW1ucygpKSB7XG4gICAgICAgIGlmICghY29sdW1uLmdldEluZGV4KCkpIGNvbnRpbnVlXG5cbiAgICAgICAgbGV0IGluZGV4TmFtZSA9IGBpbmRleF9vbl9gXG5cbiAgICAgICAgaWYgKGRhdGFiYXNlVHlwZSA9PSBcInNxbGl0ZVwiKSBzcWwgKz0gYCR7dGFibGVEYXRhLmdldE5hbWUoKX1fYFxuXG4gICAgICAgIGluZGV4TmFtZSArPSBjb2x1bW4uZ2V0TmFtZSgpXG5cbiAgICAgICAgc3FsICs9IFwiLFwiXG5cbiAgICAgICAgY29uc3Qge3VuaXF1ZSwgLi4ucmVzdEluZGV4QXJnc30gPSBjb2x1bW4uZ2V0SW5kZXhBcmdzKClcblxuICAgICAgICByZXN0QXJnc0Vycm9yKHJlc3RJbmRleEFyZ3MpXG5cbiAgICAgICAgaWYgKHVuaXF1ZSkge1xuICAgICAgICAgIHNxbCArPSBcIiBVTklRVUVcIlxuICAgICAgICB9XG5cbiAgICAgICAgc3FsICs9IGAgSU5ERVggJHtvcHRpb25zLnF1b3RlSW5kZXhOYW1lKGluZGV4TmFtZSl9ICgke29wdGlvbnMucXVvdGVDb2x1bW5OYW1lKGNvbHVtbi5nZXROYW1lKCkpfSlgXG4gICAgICB9XG4gICAgfVxuXG4gICAgc3FsICs9IFwiKVwiXG5cbiAgICBpZiAoZGF0YWJhc2VUeXBlID09IFwibXlzcWxcIikge1xuICAgICAgc3FsICs9IFwiIERFRkFVTFQgQ0hBUlNFVD11dGY4bWI0IENPTExBVEU9dXRmOG1iNF91bmljb2RlX2NpXCJcbiAgICB9XG5cbiAgICBpZiAoZGF0YWJhc2VUeXBlID09IFwibXNzcWxcIiAmJiBpZk5vdEV4aXN0cykge1xuICAgICAgc3FsICs9IFwiIEVORFwiXG4gICAgfVxuXG4gICAgc3Fscy5wdXNoKHNxbClcblxuICAgIGlmIChkYXRhYmFzZVR5cGUgPT0gXCJwZ3NxbFwiKSB7XG4gICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiB0YWJsZURhdGEuZ2V0Q29sdW1ucygpKSB7XG4gICAgICAgIGNvbnN0IG5vdGVzID0gY29sdW1uLmdldE5vdGVzRm9yRGF0YWJhc2UoZGF0YWJhc2VUeXBlKVxuICAgICAgICBjb25zdCBhY3R1YWxOYW1lID0gY29sdW1uLmdldEFjdHVhbE5hbWUoKVxuXG4gICAgICAgIGlmICghbm90ZXMgfHwgIWFjdHVhbE5hbWUpIGNvbnRpbnVlXG5cbiAgICAgICAgc3Fscy5wdXNoKFxuICAgICAgICAgIGBDT01NRU5UIE9OIENPTFVNTiAke29wdGlvbnMucXVvdGVUYWJsZU5hbWUodGFibGVEYXRhLmdldE5hbWUoKSl9LiR7b3B0aW9ucy5xdW90ZUNvbHVtbk5hbWUoYWN0dWFsTmFtZSl9IElTICR7b3B0aW9ucy5xdW90ZShub3Rlcyl9YFxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmluZGV4SW5DcmVhdGVUYWJsZSkge1xuICAgICAgZm9yIChjb25zdCBpbmRleCBvZiB0YWJsZURhdGEuZ2V0SW5kZXhlcygpKSB7XG4gICAgICAgIGNvbnN0IGNyZWF0ZUluZGV4QXJncyA9IHtcbiAgICAgICAgICBjb2x1bW5zOiBpbmRleC5nZXRDb2x1bW5zKCksXG4gICAgICAgICAgZHJpdmVyOiB0aGlzLmdldERyaXZlcigpLFxuICAgICAgICAgIGlmTm90RXhpc3RzOiB0cnVlLFxuICAgICAgICAgIG5hbWU6IGluZGV4LmdldE5hbWUoKSxcbiAgICAgICAgICB0YWJsZU5hbWU6IHRhYmxlRGF0YS5nZXROYW1lKCksXG4gICAgICAgICAgdW5pcXVlOiBpbmRleC5nZXRVbmlxdWUoKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNyZWF0ZUluZGV4U1FMcyA9IGF3YWl0IG5ldyBDcmVhdGVJbmRleEJhc2UoY3JlYXRlSW5kZXhBcmdzKS50b1NRTHMoKVxuXG4gICAgICAgIGZvciAoY29uc3QgY3JlYXRlSW5kZXhTUUwgb2YgY3JlYXRlSW5kZXhTUUxzKSB7XG4gICAgICAgICAgc3Fscy5wdXNoKGNyZWF0ZUluZGV4U1FMKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIENyZWF0ZSBpbmRleGVzIGZvciBhbGwgY29sdW1ucyB3aXRoIHRoZSBpbmRleCBhcmd1bWVudFxuICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgdGFibGVEYXRhLmdldENvbHVtbnMoKSkge1xuICAgICAgICBpZiAoIWNvbHVtbi5nZXRJbmRleCgpKSBjb250aW51ZVxuXG4gICAgICAgIGNvbnN0IHt1bmlxdWUsIC4uLnJlc3RJbmRleEFyZ3N9ID0gY29sdW1uLmdldEluZGV4QXJncygpXG5cbiAgICAgICAgcmVzdEFyZ3NFcnJvcihyZXN0SW5kZXhBcmdzKVxuXG4gICAgICAgIGxldCBpbmRleE5hbWUgPSBgaW5kZXhfb25fYFxuXG4gICAgICAgIGlmIChkYXRhYmFzZVR5cGUgPT0gXCJzcWxpdGVcIikgaW5kZXhOYW1lICs9IGAke3RhYmxlRGF0YS5nZXROYW1lKCl9X2BcblxuICAgICAgICBpbmRleE5hbWUgKz0gY29sdW1uLmdldE5hbWUoKVxuXG4gICAgICAgIGNvbnN0IGNyZWF0ZUluZGV4QXJncyA9IHtcbiAgICAgICAgICBjb2x1bW5zOiBbY29sdW1uLmdldE5hbWUoKV0sXG4gICAgICAgICAgZHJpdmVyOiB0aGlzLmdldERyaXZlcigpLFxuICAgICAgICAgIG5hbWU6IGluZGV4TmFtZSxcbiAgICAgICAgICB0YWJsZU5hbWU6IHRhYmxlRGF0YS5nZXROYW1lKCksXG4gICAgICAgICAgdW5pcXVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3JlYXRlSW5kZXhTUUxzID0gYXdhaXQgbmV3IENyZWF0ZUluZGV4QmFzZShjcmVhdGVJbmRleEFyZ3MpLnRvU1FMcygpXG5cbiAgICAgICAgZm9yIChjb25zdCBjcmVhdGVJbmRleFNRTCBvZiBjcmVhdGVJbmRleFNRTHMpIHtcbiAgICAgICAgICBzcWxzLnB1c2goY3JlYXRlSW5kZXhTUUwpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc3Fsc1xuICB9XG59XG4iXX0=
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXRhYmxlLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvcXVlcnkvY3JlYXRlLXRhYmxlLWJhc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sZUFBZSxNQUFNLHdCQUF3QixDQUFBO0FBQ3BELE9BQU8sU0FBUyxNQUFNLFdBQVcsQ0FBQTtBQUNqQyxPQUFPLGFBQWEsTUFBTSxnQ0FBZ0MsQ0FBQTtBQUMxRCxPQUFPLFNBQVMsTUFBTSx3QkFBd0IsQ0FBQTtBQUM5QyxPQUFPLFdBQVcsTUFBTSwrQkFBK0IsQ0FBQTtBQUV2RCxNQUFNLENBQUMsT0FBTyxPQUFPLHFDQUFzQyxTQUFRLFNBQVM7SUFDMUU7Ozs7Ozs7T0FPRztJQUNILFlBQVksRUFBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixHQUFHLElBQUksRUFBRSxTQUFTLEVBQUM7UUFDckUsSUFBSSxDQUFDLENBQUMsU0FBUyxZQUFZLFNBQVMsQ0FBQztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQTtRQUV0RixLQUFLLENBQUMsRUFBQyxNQUFNLEVBQUMsQ0FBQyxDQUFBO1FBQ2YsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUE7UUFDOUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFBO1FBQzVDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFBO0lBQzVCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsS0FBSztRQUNULE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQTtRQUMzQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUE7UUFDL0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBQ2pDLE1BQU0sRUFBQyxTQUFTLEVBQUMsR0FBRyxJQUFJLENB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RSxDQUFDO29CQUMzQixNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRTtvQkFDeEIsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsU0FBUyxFQUFFLFNBQVMsQ0FBQyxPQUFPLEVBQUU7b0JBQzlCLE1BQU07aUJBQ1AsQ0FBQTtnQkFDRCxNQUFNLGVBQWUsR0FBRyxNQUFNLElBQUksZUFBZSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFBO2dCQUUzRSxLQUFLLE1BQU0sY0FBYyxJQUFJLGVBQWUsRUFBRSxDQUFDO29CQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBO2dCQUMzQixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgQ3JlYXRlSW5kZXhCYXNlIGZyb20gXCIuL2NyZWF0ZS1pbmRleC1iYXNlLmpzXCJcbmltcG9ydCBRdWVyeUJhc2UgZnJvbSBcIi4vYmFzZS5qc1wiXG5pbXBvcnQgcmVzdEFyZ3NFcnJvciBmcm9tIFwiLi4vLi4vdXRpbHMvcmVzdC1hcmdzLWVycm9yLmpzXCJcbmltcG9ydCBUYWJsZURhdGEgZnJvbSBcIi4uL3RhYmxlLWRhdGEvaW5kZXguanNcIlxuaW1wb3J0IFRhYmxlQ29sdW1uIGZyb20gXCIuLi90YWJsZS1kYXRhL3RhYmxlLWNvbHVtbi5qc1wiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0RhdGFiYXNlUXVlcnlDcmVhdGVUYWJsZUJhc2UgZXh0ZW5kcyBRdWVyeUJhc2Uge1xuICAvKipcbiAgICogUnVucyBjb25zdHJ1Y3Rvci5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9kcml2ZXJzL2Jhc2UuanNcIikuZGVmYXVsdH0gYXJncy5kcml2ZXIgLSBEYXRhYmFzZSBkcml2ZXIgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2FyZ3MuaWZOb3RFeGlzdHNdIC0gV2hldGhlciBpZiBub3QgZXhpc3RzLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFthcmdzLmluZGV4SW5DcmVhdGVUYWJsZV0gLSBXaGV0aGVyIGluZGV4IGluIGNyZWF0ZSB0YWJsZS5cbiAgICogQHBhcmFtIHtUYWJsZURhdGF9IGFyZ3MudGFibGVEYXRhIC0gVGFibGUgZGF0YS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHtkcml2ZXIsIGlmTm90RXhpc3RzLCBpbmRleEluQ3JlYXRlVGFibGUgPSB0cnVlLCB0YWJsZURhdGF9KSB7XG4gICAgaWYgKCEodGFibGVEYXRhIGluc3RhbmNlb2YgVGFibGVEYXRhKSkgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCB0YWJsZSBkYXRhIHdhcyBnaXZlblwiKVxuXG4gICAgc3VwZXIoe2RyaXZlcn0pXG4gICAgdGhpcy5pZk5vdEV4aXN0cyA9IGlmTm90RXhpc3RzXG4gICAgdGhpcy5pbmRleEluQ3JlYXRlVGFibGUgPSBpbmRleEluQ3JlYXRlVGFibGVcbiAgICB0aGlzLnRhYmxlRGF0YSA9IHRhYmxlRGF0YVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgdG8gc3FsLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmdbXT59IC0gUmVzb2x2ZXMgd2l0aCBTUUwgc3RhdGVtZW50cy5cbiAgICovXG4gIGFzeW5jIHRvU3FsKCkge1xuICAgIGNvbnN0IGRhdGFiYXNlVHlwZSA9IHRoaXMuZ2V0RGF0YWJhc2VUeXBlKClcbiAgICBjb25zdCBkcml2ZXIgPSB0aGlzLmdldERyaXZlcigpXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuZ2V0T3B0aW9ucygpXG4gICAgY29uc3Qge3RhYmxlRGF0YX0gPSB0aGlzXG4gICAgY29uc3Qgc3FscyA9IFtdXG4gICAgY29uc3QgaWZOb3RFeGlzdHMgPSB0aGlzLmlmTm90RXhpc3RzIHx8IHRhYmxlRGF0YS5nZXRJZk5vdEV4aXN0cygpXG4gICAgbGV0IHNxbCA9IFwiXCJcblxuICAgIGlmIChkYXRhYmFzZVR5cGUgPT0gXCJtc3NxbFwiICYmIGlmTm90RXhpc3RzKSB7XG4gICAgICBzcWwgKz0gYElGIE5PVCBFWElTVFMoU0VMRUNUICogRlJPTSBbc3lzb2JqZWN0c10gV0hFUkUgW25hbWVdID0gJHtvcHRpb25zLnF1b3RlKHRhYmxlRGF0YS5nZXROYW1lKCkpfSBBTkQgW3h0eXBlXSA9ICdVJykgQkVHSU4gYFxuICAgIH1cblxuICAgIHNxbCArPSBcIkNSRUFURSBUQUJMRVwiXG5cbiAgICBpZiAoZGF0YWJhc2VUeXBlICE9IFwibXNzcWxcIiAmJiBpZk5vdEV4aXN0cykgc3FsICs9IFwiIElGIE5PVCBFWElTVFNcIlxuXG4gICAgc3FsICs9IGAgJHtvcHRpb25zLnF1b3RlVGFibGVOYW1lKHRhYmxlRGF0YS5nZXROYW1lKCkpfSAoYFxuXG4gICAgY29uc3QgdGFibGVMZXZlbEZLQ29sdW1uTmFtZXMgPSBuZXcgU2V0KHRhYmxlRGF0YS5nZXRGb3JlaWduS2V5cygpLm1hcCgoZm9yZWlnbktleSkgPT4gZm9yZWlnbktleS5nZXRDb2x1bW5OYW1lKCkpKVxuXG4gICAgbGV0IGNvbHVtbkNvdW50ID0gMFxuXG4gICAgZm9yIChjb25zdCBjb2x1bW4gb2YgdGFibGVEYXRhLmdldENvbHVtbnMoKSkge1xuICAgICAgY29sdW1uQ291bnQrK1xuXG4gICAgICBpZiAoY29sdW1uQ291bnQgPiAxKSBzcWwgKz0gXCIsIFwiXG5cbiAgICAgIHNxbCArPSBjb2x1bW4uZ2V0U1FMKHtkcml2ZXIsIGZvckFsdGVyVGFibGU6IGZhbHNlLCBza2lwRm9yZWlnbktleTogdGFibGVMZXZlbEZLQ29sdW1uTmFtZXMuaGFzKGNvbHVtbi5nZXRBY3R1YWxOYW1lKCkpfSlcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGZvcmVpZ25LZXkgb2YgdGFibGVEYXRhLmdldEZvcmVpZ25LZXlzKCkpIHtcbiAgICAgIHNxbCArPSBcIiwgXCJcblxuICAgICAgaWYgKGZvcmVpZ25LZXkuZ2V0TmFtZSgpKSB7XG4gICAgICAgIHNxbCArPSBgQ09OU1RSQUlOVCAke29wdGlvbnMucXVvdGVJbmRleE5hbWUoZm9yZWlnbktleS5nZXROYW1lKCkpfSBgXG4gICAgICB9XG5cbiAgICAgIHNxbCArPSBgRk9SRUlHTiBLRVkgKCR7b3B0aW9ucy5xdW90ZUNvbHVtbk5hbWUoZm9yZWlnbktleS5nZXRDb2x1bW5OYW1lKCkpfSlgXG4gICAgICBzcWwgKz0gYCBSRUZFUkVOQ0VTICR7b3B0aW9ucy5xdW90ZVRhYmxlTmFtZShmb3JlaWduS2V5LmdldFJlZmVyZW5jZWRUYWJsZU5hbWUoKSl9ICgke29wdGlvbnMucXVvdGVDb2x1bW5OYW1lKGZvcmVpZ25LZXkuZ2V0UmVmZXJlbmNlZENvbHVtbk5hbWUoKSl9KWBcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pbmRleEluQ3JlYXRlVGFibGUpIHtcbiAgICAgIGZvciAoY29uc3QgaW5kZXggb2YgdGFibGVEYXRhLmdldEluZGV4ZXMoKSkge1xuICAgICAgICBzcWwgKz0gXCIsXCJcblxuICAgICAgICBpZiAoaW5kZXguZ2V0VW5pcXVlKCkpIHtcbiAgICAgICAgICBzcWwgKz0gXCIgVU5JUVVFXCJcbiAgICAgICAgfVxuXG4gICAgICAgIHNxbCArPSBcIiBJTkRFWFwiXG5cbiAgICAgICAgaWYgKGluZGV4LmdldE5hbWUoKSkge1xuICAgICAgICAgIGNvbnN0IGluZGV4TmFtZSA9IGluZGV4LmdldE5hbWUoKVxuXG4gICAgICAgICAgaWYgKCFpbmRleE5hbWUpIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIGluZGV4IG5hbWVcIilcblxuICAgICAgICAgIHNxbCArPSBgICR7b3B0aW9ucy5xdW90ZUluZGV4TmFtZShpbmRleE5hbWUpfWBcbiAgICAgICAgfVxuXG4gICAgICAgIHNxbCArPSBcIiAoXCJcblxuICAgICAgICBpbmRleC5nZXRDb2x1bW5zKCkuZm9yRWFjaCgoY29sdW1uLCBjb2x1bW5JbmRleCkgPT4ge1xuICAgICAgICAgIGlmIChjb2x1bW5JbmRleCA+IDApIHNxbCArPSBcIiwgXCJcblxuICAgICAgICAgIGlmIChjb2x1bW4gaW5zdGFuY2VvZiBUYWJsZUNvbHVtbikge1xuICAgICAgICAgICAgc3FsICs9IGRyaXZlci5xdW90ZUNvbHVtbihjb2x1bW4uZ2V0TmFtZSgpKVxuICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGNvbHVtbiA9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBzcWwgKz0gZHJpdmVyLnF1b3RlQ29sdW1uKGNvbHVtbilcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGNvbHVtbiB0eXBlOiAke3R5cGVvZiBjb2x1bW59YClcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG5cbiAgICAgICAgc3FsICs9IFwiKVwiXG4gICAgICB9XG5cbiAgICAgIC8vIENyZWF0ZSBpbmRleGVzIGZvciBhbGwgY29sdW1ucyB3aXRoIHRoZSBpbmRleCBhcmd1bWVudFxuICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgdGFibGVEYXRhLmdldENvbHVtbnMoKSkge1xuICAgICAgICBpZiAoIWNvbHVtbi5nZXRJbmRleCgpKSBjb250aW51ZVxuXG4gICAgICAgIGxldCBpbmRleE5hbWUgPSBgaW5kZXhfb25fYFxuXG4gICAgICAgIGlmIChkYXRhYmFzZVR5cGUgPT0gXCJzcWxpdGVcIiB8fCBkYXRhYmFzZVR5cGUgPT0gXCJwZ3NxbFwiKSBpbmRleE5hbWUgKz0gYCR7dGFibGVEYXRhLmdldE5hbWUoKX1fYFxuXG4gICAgICAgIGluZGV4TmFtZSArPSBjb2x1bW4uZ2V0TmFtZSgpXG5cbiAgICAgICAgc3FsICs9IFwiLFwiXG5cbiAgICAgICAgY29uc3Qge3VuaXF1ZSwgLi4ucmVzdEluZGV4QXJnc30gPSBjb2x1bW4uZ2V0SW5kZXhBcmdzKClcblxuICAgICAgICByZXN0QXJnc0Vycm9yKHJlc3RJbmRleEFyZ3MpXG5cbiAgICAgICAgaWYgKHVuaXF1ZSkge1xuICAgICAgICAgIHNxbCArPSBcIiBVTklRVUVcIlxuICAgICAgICB9XG5cbiAgICAgICAgc3FsICs9IGAgSU5ERVggJHtvcHRpb25zLnF1b3RlSW5kZXhOYW1lKGluZGV4TmFtZSl9ICgke29wdGlvbnMucXVvdGVDb2x1bW5OYW1lKGNvbHVtbi5nZXROYW1lKCkpfSlgXG4gICAgICB9XG4gICAgfVxuXG4gICAgc3FsICs9IFwiKVwiXG5cbiAgICBpZiAoZGF0YWJhc2VUeXBlID09IFwibXlzcWxcIikge1xuICAgICAgc3FsICs9IFwiIERFRkFVTFQgQ0hBUlNFVD11dGY4bWI0IENPTExBVEU9dXRmOG1iNF91bmljb2RlX2NpXCJcbiAgICB9XG5cbiAgICBpZiAoZGF0YWJhc2VUeXBlID09IFwibXNzcWxcIiAmJiBpZk5vdEV4aXN0cykge1xuICAgICAgc3FsICs9IFwiIEVORFwiXG4gICAgfVxuXG4gICAgc3Fscy5wdXNoKHNxbClcblxuICAgIGlmIChkYXRhYmFzZVR5cGUgPT0gXCJwZ3NxbFwiKSB7XG4gICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiB0YWJsZURhdGEuZ2V0Q29sdW1ucygpKSB7XG4gICAgICAgIGNvbnN0IG5vdGVzID0gY29sdW1uLmdldE5vdGVzRm9yRGF0YWJhc2UoZGF0YWJhc2VUeXBlKVxuICAgICAgICBjb25zdCBhY3R1YWxOYW1lID0gY29sdW1uLmdldEFjdHVhbE5hbWUoKVxuXG4gICAgICAgIGlmICghbm90ZXMgfHwgIWFjdHVhbE5hbWUpIGNvbnRpbnVlXG5cbiAgICAgICAgc3Fscy5wdXNoKFxuICAgICAgICAgIGBDT01NRU5UIE9OIENPTFVNTiAke29wdGlvbnMucXVvdGVUYWJsZU5hbWUodGFibGVEYXRhLmdldE5hbWUoKSl9LiR7b3B0aW9ucy5xdW90ZUNvbHVtbk5hbWUoYWN0dWFsTmFtZSl9IElTICR7b3B0aW9ucy5xdW90ZShub3Rlcyl9YFxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmluZGV4SW5DcmVhdGVUYWJsZSkge1xuICAgICAgZm9yIChjb25zdCBpbmRleCBvZiB0YWJsZURhdGEuZ2V0SW5kZXhlcygpKSB7XG4gICAgICAgIGNvbnN0IGNyZWF0ZUluZGV4QXJncyA9IHtcbiAgICAgICAgICBjb2x1bW5zOiBpbmRleC5nZXRDb2x1bW5zKCksXG4gICAgICAgICAgZHJpdmVyOiB0aGlzLmdldERyaXZlcigpLFxuICAgICAgICAgIGlmTm90RXhpc3RzOiB0cnVlLFxuICAgICAgICAgIG5hbWU6IGluZGV4LmdldE5hbWUoKSxcbiAgICAgICAgICB0YWJsZU5hbWU6IHRhYmxlRGF0YS5nZXROYW1lKCksXG4gICAgICAgICAgdW5pcXVlOiBpbmRleC5nZXRVbmlxdWUoKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNyZWF0ZUluZGV4U1FMcyA9IGF3YWl0IG5ldyBDcmVhdGVJbmRleEJhc2UoY3JlYXRlSW5kZXhBcmdzKS50b1NRTHMoKVxuXG4gICAgICAgIGZvciAoY29uc3QgY3JlYXRlSW5kZXhTUUwgb2YgY3JlYXRlSW5kZXhTUUxzKSB7XG4gICAgICAgICAgc3Fscy5wdXNoKGNyZWF0ZUluZGV4U1FMKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIENyZWF0ZSBpbmRleGVzIGZvciBhbGwgY29sdW1ucyB3aXRoIHRoZSBpbmRleCBhcmd1bWVudFxuICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgdGFibGVEYXRhLmdldENvbHVtbnMoKSkge1xuICAgICAgICBpZiAoIWNvbHVtbi5nZXRJbmRleCgpKSBjb250aW51ZVxuXG4gICAgICAgIGNvbnN0IHt1bmlxdWUsIC4uLnJlc3RJbmRleEFyZ3N9ID0gY29sdW1uLmdldEluZGV4QXJncygpXG5cbiAgICAgICAgcmVzdEFyZ3NFcnJvcihyZXN0SW5kZXhBcmdzKVxuXG4gICAgICAgIGxldCBpbmRleE5hbWUgPSBgaW5kZXhfb25fYFxuXG4gICAgICAgIGlmIChkYXRhYmFzZVR5cGUgPT0gXCJzcWxpdGVcIiB8fCBkYXRhYmFzZVR5cGUgPT0gXCJwZ3NxbFwiKSBpbmRleE5hbWUgKz0gYCR7dGFibGVEYXRhLmdldE5hbWUoKX1fYFxuXG4gICAgICAgIGluZGV4TmFtZSArPSBjb2x1bW4uZ2V0TmFtZSgpXG5cbiAgICAgICAgY29uc3QgY3JlYXRlSW5kZXhBcmdzID0ge1xuICAgICAgICAgIGNvbHVtbnM6IFtjb2x1bW4uZ2V0TmFtZSgpXSxcbiAgICAgICAgICBkcml2ZXI6IHRoaXMuZ2V0RHJpdmVyKCksXG4gICAgICAgICAgbmFtZTogaW5kZXhOYW1lLFxuICAgICAgICAgIHRhYmxlTmFtZTogdGFibGVEYXRhLmdldE5hbWUoKSxcbiAgICAgICAgICB1bmlxdWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjcmVhdGVJbmRleFNRTHMgPSBhd2FpdCBuZXcgQ3JlYXRlSW5kZXhCYXNlKGNyZWF0ZUluZGV4QXJncykudG9TUUxzKClcblxuICAgICAgICBmb3IgKGNvbnN0IGNyZWF0ZUluZGV4U1FMIG9mIGNyZWF0ZUluZGV4U1FMcykge1xuICAgICAgICAgIHNxbHMucHVzaChjcmVhdGVJbmRleFNRTClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzcWxzXG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AuditChanges type.
|
|
3
|
+
*/
|
|
4
|
+
export type AuditChanges = Record<string, unknown>;
|
|
5
|
+
/**
|
|
6
|
+
* AuditEventPayload type.
|
|
7
|
+
*/
|
|
8
|
+
export type AuditEventPayload = {
|
|
9
|
+
/**
|
|
10
|
+
* - Audit action name.
|
|
11
|
+
*/
|
|
12
|
+
action: string;
|
|
13
|
+
/**
|
|
14
|
+
* - Created audit row id.
|
|
15
|
+
*/
|
|
16
|
+
auditId: number | string;
|
|
17
|
+
/**
|
|
18
|
+
* - Changes captured for the audit.
|
|
19
|
+
*/
|
|
20
|
+
auditedChanges: AuditChanges | null;
|
|
21
|
+
/**
|
|
22
|
+
* - Optional caller-supplied audit params.
|
|
23
|
+
*/
|
|
24
|
+
params: Record<string, unknown> | null;
|
|
25
|
+
/**
|
|
26
|
+
* - Audited record.
|
|
27
|
+
*/
|
|
28
|
+
record: import("./index.js").default;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* AuditCallback type.
|
|
32
|
+
*/
|
|
33
|
+
export type AuditCallback = (payload: AuditEventPayload) => void | Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* CreateAuditArgs type.
|
|
36
|
+
*/
|
|
37
|
+
export type CreateAuditArgs = {
|
|
38
|
+
/**
|
|
39
|
+
* - Audit action name.
|
|
40
|
+
*/
|
|
41
|
+
action: string;
|
|
42
|
+
/**
|
|
43
|
+
* - Explicit changes to persist.
|
|
44
|
+
*/
|
|
45
|
+
auditedChanges?: Record<string, any> | null | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* - Optional metadata to store with the audit.
|
|
48
|
+
*/
|
|
49
|
+
params?: Record<string, any> | null | undefined;
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* AuditedModelClass type.
|
|
53
|
+
*/
|
|
54
|
+
export type AuditedModelClass = typeof import("./index.js").default & {
|
|
55
|
+
_auditCallbacks?: Record<string, AuditCallback[]>;
|
|
56
|
+
_auditLifecycleCallbacksRegistered?: boolean;
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Captures create changes on a model instance.
|
|
60
|
+
* @param {import("./index.js").default & {_pendingCreateAuditChanges?: AuditChanges}} record - Record to capture.
|
|
61
|
+
* @returns {void}
|
|
62
|
+
*/
|
|
63
|
+
export function captureCreateAuditChanges(record: import("./index.js").default & {
|
|
64
|
+
_pendingCreateAuditChanges?: AuditChanges;
|
|
65
|
+
}): void;
|
|
66
|
+
/**
|
|
67
|
+
* Captures update changes on a model instance.
|
|
68
|
+
* @param {import("./index.js").default & {_pendingUpdateAuditChanges?: AuditChanges}} record - Record to capture.
|
|
69
|
+
* @returns {void}
|
|
70
|
+
*/
|
|
71
|
+
export function captureUpdateAuditChanges(record: import("./index.js").default & {
|
|
72
|
+
_pendingUpdateAuditChanges?: AuditChanges;
|
|
73
|
+
}): void;
|
|
74
|
+
/**
|
|
75
|
+
* Creates an audit row for a record.
|
|
76
|
+
* @param {import("./index.js").default} record - Record to audit.
|
|
77
|
+
* @param {CreateAuditArgs} args - Audit row options.
|
|
78
|
+
* @returns {Promise<number | string>} Created audit row id.
|
|
79
|
+
*/
|
|
80
|
+
export function createAudit(record: import("./index.js").default, args: CreateAuditArgs): Promise<number | string>;
|
|
81
|
+
/**
|
|
82
|
+
* Creates the create audit row for a model instance.
|
|
83
|
+
* @param {import("./index.js").default & {_pendingCreateAuditChanges?: AuditChanges}} record - Record to audit.
|
|
84
|
+
* @returns {Promise<void>}
|
|
85
|
+
*/
|
|
86
|
+
export function createCreateAudit(record: import("./index.js").default & {
|
|
87
|
+
_pendingCreateAuditChanges?: AuditChanges;
|
|
88
|
+
}): Promise<void>;
|
|
89
|
+
/**
|
|
90
|
+
* Creates the destroy audit row for a model instance.
|
|
91
|
+
* @param {import("./index.js").default} record - Record to audit.
|
|
92
|
+
* @returns {Promise<void>}
|
|
93
|
+
*/
|
|
94
|
+
export function createDestroyAudit(record: import("./index.js").default): Promise<void>;
|
|
95
|
+
/**
|
|
96
|
+
* Creates the update audit row for a model instance.
|
|
97
|
+
* @param {import("./index.js").default & {_pendingUpdateAuditChanges?: AuditChanges}} record - Record to audit.
|
|
98
|
+
* @returns {Promise<void>}
|
|
99
|
+
*/
|
|
100
|
+
export function createUpdateAudit(record: import("./index.js").default & {
|
|
101
|
+
_pendingUpdateAuditChanges?: AuditChanges;
|
|
102
|
+
}): Promise<void>;
|
|
103
|
+
/**
|
|
104
|
+
* Registers an audit event callback for a model/action pair.
|
|
105
|
+
* @param {AuditedModelClass} modelClass - Model class to observe.
|
|
106
|
+
* @param {string} action - Audit action name.
|
|
107
|
+
* @param {AuditCallback} callback - Callback invoked after matching audit rows are created.
|
|
108
|
+
* @returns {() => void} Unsubscribe function.
|
|
109
|
+
*/
|
|
110
|
+
export function registerAuditCallback(modelClass: AuditedModelClass, action: string, callback: AuditCallback): () => void;
|
|
111
|
+
/**
|
|
112
|
+
* AuditChanges type.
|
|
113
|
+
* @typedef {Record<string, ?>} AuditChanges
|
|
114
|
+
*/
|
|
115
|
+
/**
|
|
116
|
+
* AuditEventPayload type.
|
|
117
|
+
* @typedef {object} AuditEventPayload
|
|
118
|
+
* @property {string} action - Audit action name.
|
|
119
|
+
* @property {number | string} auditId - Created audit row id.
|
|
120
|
+
* @property {AuditChanges | null} auditedChanges - Changes captured for the audit.
|
|
121
|
+
* @property {Record<string, ?> | null} params - Optional caller-supplied audit params.
|
|
122
|
+
* @property {import("./index.js").default} record - Audited record.
|
|
123
|
+
*/
|
|
124
|
+
/**
|
|
125
|
+
* AuditCallback type.
|
|
126
|
+
* @typedef {(payload: AuditEventPayload) => void | Promise<void>} AuditCallback
|
|
127
|
+
*/
|
|
128
|
+
/**
|
|
129
|
+
* CreateAuditArgs type.
|
|
130
|
+
* @typedef {object} CreateAuditArgs
|
|
131
|
+
* @property {string} action - Audit action name.
|
|
132
|
+
* @property {AuditChanges | null} [auditedChanges] - Explicit changes to persist.
|
|
133
|
+
* @property {Record<string, ?> | null} [params] - Optional metadata to store with the audit.
|
|
134
|
+
*/
|
|
135
|
+
/**
|
|
136
|
+
* AuditedModelClass type.
|
|
137
|
+
* @typedef {typeof import("./index.js").default & {
|
|
138
|
+
* _auditCallbacks?: Record<string, AuditCallback[]>,
|
|
139
|
+
* _auditLifecycleCallbacksRegistered?: boolean
|
|
140
|
+
* }} AuditedModelClass
|
|
141
|
+
*/
|
|
142
|
+
/**
|
|
143
|
+
* Adds automatic create/update/destroy auditing callbacks to a model class.
|
|
144
|
+
* @param {AuditedModelClass} modelClass - Model class to audit.
|
|
145
|
+
* @returns {void}
|
|
146
|
+
*/
|
|
147
|
+
export function registerAuditing(modelClass: AuditedModelClass): void;
|
|
148
|
+
/**
|
|
149
|
+
* Returns records without an audit row for the given action.
|
|
150
|
+
* @template {AuditedModelClass} MC
|
|
151
|
+
* @param {MC} modelClass - Model class to scope.
|
|
152
|
+
* @param {string} action - Audit action to exclude.
|
|
153
|
+
* @returns {import("../query/model-class-query.js").default<MC>} Query scoped to records without that audit action.
|
|
154
|
+
*/
|
|
155
|
+
export function withoutAudit<MC extends AuditedModelClass>(modelClass: MC, action: string): import("../query/model-class-query.js").default<MC>;
|
|
156
|
+
//# sourceMappingURL=auditing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auditing.d.ts","sourceRoot":"","sources":["../../../../src/database/record/auditing.js"],"names":[],"mappings":";;;2BAMa,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC;;;;;;;;YAMhB,MAAM;;;;aACN,MAAM,GAAG,MAAM;;;;oBACf,YAAY,GAAG,IAAI;;;;YACnB,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,GAAG,IAAI;;;;YACxB,OAAO,YAAY,EAAE,OAAO;;;;;4BAK7B,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;;;;;;;;YAMnD,MAAM;;;;;;;;;;;;;gCAOP,cAAc,YAAY,EAAE,OAAO,GAAG;IAC9C,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IAClD,kCAAkC,CAAC,EAAE,OAAO,CAAA;CAC7C;AAuKJ;;;;GAIG;AACH,kDAHW,OAAO,YAAY,EAAE,OAAO,GAAG;IAAC,0BAA0B,CAAC,EAAE,YAAY,CAAA;CAAC,GACxE,IAAI,CAIhB;AAgBD;;;;GAIG;AACH,kDAHW,OAAO,YAAY,EAAE,OAAO,GAAG;IAAC,0BAA0B,CAAC,EAAE,YAAY,CAAA;CAAC,GACxE,IAAI,CAIhB;AA1HD;;;;;GAKG;AACH,oCAJW,OAAO,YAAY,EAAE,OAAO,QAC5B,eAAe,GACb,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,CAQpC;AAyFD;;;;GAIG;AACH,0CAHW,OAAO,YAAY,EAAE,OAAO,GAAG;IAAC,0BAA0B,CAAC,EAAE,YAAY,CAAA;CAAC,GACxE,OAAO,CAAC,IAAI,CAAC,CASzB;AA6BD;;;;GAIG;AACH,2CAHW,OAAO,YAAY,EAAE,OAAO,GAC1B,OAAO,CAAC,IAAI,CAAC,CAOzB;AA5BD;;;;GAIG;AACH,0CAHW,OAAO,YAAY,EAAE,OAAO,GAAG;IAAC,0BAA0B,CAAC,EAAE,YAAY,CAAA;CAAC,GACxE,OAAO,CAAC,IAAI,CAAC,CAazB;AAlMD;;;;;;GAMG;AACH,kDALW,iBAAiB,UACjB,MAAM,YACN,aAAa,GACX,MAAM,IAAI,CAoBtB;AA/ED;;;GAGG;AAEH;;;;;;;;GAQG;AAEH;;;GAGG;AAEH;;;;;;GAMG;AAEH;;;;;;GAMG;AAEH;;;;GAIG;AACH,6CAHW,iBAAiB,GACf,IAAI,CAahB;AAkND;;;;;;GAMG;AACH,6BALiC,EAAE,SAArB,iBAAkB,cACrB,EAAE,UACF,MAAM,GACJ,OAAO,+BAA+B,EAAE,OAAO,CAAC,EAAE,CAAC,CA2B/D"}
|