New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@uql/mongo

Package Overview
Dependencies
Maintainers
1
Versions
113
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@uql/mongo - npm Package Compare versions

Comparing version 0.4.20 to 0.4.21

4

mongodbQuerier.d.ts

@@ -11,7 +11,7 @@ import { MongoClient, ObjectId } from 'mongodb';

insertMany<E>(entity: Type<E>, payload: E[]): Promise<any[]>;
updateMany<E>(entity: Type<E>, qm: QueryCriteria<E>, payload: E): Promise<number>;
updateMany<E>(entity: Type<E>, payload: E, qm: QueryCriteria<E>): Promise<number>;
findMany<E>(entity: Type<E>, qm: Query<E>): Promise<E[]>;
findOneById<E>(entity: Type<E>, id: ObjectId, qo: QueryOne<E>): Promise<E>;
deleteMany<E>(entity: Type<E>, qm: QueryCriteria<E>): Promise<number>;
count<E>(entity: Type<E>, qm: QueryCriteria<E>): Promise<number>;
count<E>(entity: Type<E>, qm?: QueryCriteria<E>): Promise<number>;
get hasOpenTransaction(): boolean;

@@ -18,0 +18,0 @@ collection<E>(entity: Type<E>): import("mongodb").Collection<any>;

@@ -18,14 +18,39 @@ "use strict";

async insertMany(entity, payload) {
const persistables = payload.map((it) => {
const persistableProperties = util_1.filterPersistableProperties(entity, it);
return persistableProperties.reduce((acc, key) => {
acc[key] = it[key];
return acc;
}, {});
if (payload.length === 0) {
return;
}
payload = util_2.clone(payload);
const meta = decorator_1.getMeta(entity);
const payloads = Array.isArray(payload) ? payload : [payload];
const onInserts = util_2.objectKeys(meta.properties).filter((col) => meta.properties[col].onInsert);
onInserts.forEach((key) => {
payloads.forEach((it) => {
if (it[key] === undefined) {
it[key] = meta.properties[key].onInsert();
}
});
});
core_1.log(persistables);
const res = await this.collection(entity).insertMany(persistables, { session: this.session });
return Object.values(res.insertedIds);
const persistableProperties = util_1.filterPersistableProperties(entity, payloads[0]);
const persistables = payloads.map((it) => persistableProperties.reduce((acc, key) => {
acc[key] = it[key];
return acc;
}, {}));
core_1.log('insertMany', entity.name, persistables);
const { insertedIds } = await this.collection(entity).insertMany(persistables, { session: this.session });
const ids = Object.values(insertedIds);
payloads.forEach((it, index) => {
it[meta.id.property] = ids[index];
});
await this.insertRelations(entity, payloads);
return ids;
}
async updateMany(entity, qm, payload) {
async updateMany(entity, payload, qm) {
payload = util_2.clone(payload);
const meta = decorator_1.getMeta(entity);
const onUpdates = util_2.objectKeys(meta.properties).filter((col) => meta.properties[col].onUpdate);
onUpdates.forEach((key) => {
if (payload[key] === undefined) {
payload[key] = meta.properties[key].onUpdate();
}
});
const persistableProperties = util_1.filterPersistableProperties(entity, payload);

@@ -36,9 +61,10 @@ const persistable = persistableProperties.reduce((acc, key) => {

}, {});
const filter = this.dialect.buildFilter(entity, qm.$filter);
const filter = this.dialect.where(entity, qm.$filter);
const update = { $set: persistable };
core_1.log(filter, update);
const res = await this.collection(entity).updateMany(filter, update, {
core_1.log('updateMany', entity.name, filter, update);
const { modifiedCount } = await this.collection(entity).updateMany(filter, update, {
session: this.session,
});
return res.modifiedCount;
await this.updateRelations(entity, payload, qm);
return modifiedCount;
}

@@ -49,4 +75,4 @@ async findMany(entity, qm) {

if (util_2.hasKeys(qm.$populate)) {
const pipeline = this.dialect.buildAggregationPipeline(entity, qm);
core_1.log(pipeline);
const pipeline = this.dialect.aggregationPipeline(entity, qm);
core_1.log('findMany', entity.name, JSON.stringify(pipeline, null, 2));
documents = await this.collection(entity).aggregate(pipeline, { session: this.session }).toArray();

@@ -59,7 +85,7 @@ normalizeIds(documents, meta);

if (qm.$filter) {
const filter = this.dialect.buildFilter(entity, qm.$filter);
const filter = this.dialect.where(entity, qm.$filter);
cursor.filter(filter);
}
if (qm.$project) {
cursor.project(qm.$project);
cursor.project(this.dialect.project(qm.$project));
}

@@ -75,5 +101,3 @@ if (qm.$sort) {

}
if (core_1.isDebug()) {
cursor.explain((err, result) => core_1.log(err, result));
}
core_1.log('findMany', entity.name, qm);
documents = await cursor.toArray();

@@ -89,4 +113,4 @@ normalizeIds(documents, meta);

async deleteMany(entity, qm) {
const filter = this.dialect.buildFilter(entity, qm.$filter);
core_1.log(filter);
const filter = this.dialect.where(entity, qm.$filter);
core_1.log('deleteMany', entity.name, filter);
const res = await this.collection(entity).deleteMany(filter, {

@@ -97,5 +121,5 @@ session: this.session,

}
count(entity, qm) {
const filter = this.dialect.buildFilter(entity, qm.$filter);
core_1.log(filter);
count(entity, qm = {}) {
const filter = this.dialect.where(entity, qm.$filter);
core_1.log('count', entity.name, filter);
return this.collection(entity).countDocuments(filter, {

@@ -118,3 +142,3 @@ session: this.session,

}
core_1.log('startTransaction');
core_1.log('beginTransaction');
this.session = this.conn.startSession();

@@ -137,3 +161,3 @@ this.session.startTransaction();

}
core_1.log('abortTransaction');
core_1.log('rollbackTransaction');
await this.session.abortTransaction();

@@ -152,5 +176,3 @@ }

if (Array.isArray(docs)) {
for (const doc of docs) {
normalizeId(doc, meta);
}
docs.forEach((doc) => normalizeId(doc, meta));
}

@@ -169,3 +191,3 @@ else {

delete res._id;
for (const relProp of util_2.objectKeys(meta.relations)) {
util_2.objectKeys(meta.relations).forEach((relProp) => {
const relOpts = meta.relations[relProp];

@@ -177,5 +199,5 @@ const relData = res[relProp];

}
}
});
return res;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZ29kYlF1ZXJpZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbW9uZ29kYlF1ZXJpZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUNBQXdGO0FBQ3hGLG9DQUF5QztBQUV6QywrQ0FBZ0Q7QUFDaEQsMERBQXFEO0FBQ3JELGdEQUFvRTtBQUNwRSx5Q0FBcUQ7QUFDckQsaURBQThDO0FBRTlDLE1BQWEsY0FBZSxTQUFRLHFCQUFXO0lBRzdDLFlBQXFCLElBQWlCLEVBQVcsVUFBVSxJQUFJLDJCQUFZLEVBQUU7UUFDM0UsS0FBSyxFQUFFLENBQUM7UUFEVyxTQUFJLEdBQUosSUFBSSxDQUFhO1FBQVcsWUFBTyxHQUFQLE9BQU8sQ0FBcUI7SUFFN0UsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQUksTUFBZSxFQUFFLE9BQVk7UUFDL0MsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO1lBQ3RDLE1BQU0scUJBQXFCLEdBQUcsa0NBQTJCLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3RFLE9BQU8scUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO2dCQUMvQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNuQixPQUFPLEdBQUcsQ0FBQztZQUNiLENBQUMsRUFBRSxFQUFtQixDQUFDLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7UUFFSCxVQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFbEIsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFFOUYsT0FBTyxNQUFNLENBQUMsTUFB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O0lBQ2pDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDaEMsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQ2YsS0FBSyxNQUFNLE9BQU8sSUFBSSxpQkFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRTtRQUNoRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3QixJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsT0FBTyxZQUFZLGtCQUFRLENBQUMsRUFBRTtZQUNqRSxNQUFNLE9BQU8sR0FBRyxtQkFBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQzFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDaEM7S0FDRjtJQUNELE9BQU8sR0FBUSxDQUFDO0FBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb25nb0NsaWVudCwgQ2xpZW50U2Vzc2lvbiwgT3B0aW9uYWxJZCwgT2JqZWN0SWQsIFVwZGF0ZVF1ZXJ5IH0gZnJvbSAnbW9uZ29kYic7XG5pbXBvcnQgeyBpc0RlYnVnLCBsb2cgfSBmcm9tICdAdXFsL2NvcmUnO1xuaW1wb3J0IHsgUXVlcnksIEVudGl0eU1ldGEsIFF1ZXJ5T25lLCBUeXBlLCBRdWVyeUNyaXRlcmlhIH0gZnJvbSAnQHVxbC9jb3JlL3R5cGUnO1xuaW1wb3J0IHsgQmFzZVF1ZXJpZXIgfSBmcm9tICdAdXFsL2NvcmUvcXVlcmllcic7XG5pbXBvcnQgeyBnZXRNZXRhIH0gZnJvbSAnQHVxbC9jb3JlL2VudGl0eS9kZWNvcmF0b3InO1xuaW1wb3J0IHsgZmlsdGVyUGVyc2lzdGFibGVQcm9wZXJ0aWVzIH0gZnJvbSAnQHVxbC9jb3JlL2VudGl0eS91dGlsJztcbmltcG9ydCB7IGhhc0tleXMsIG9iamVjdEtleXMgfSBmcm9tICdAdXFsL2NvcmUvdXRpbCc7XG5pbXBvcnQgeyBNb25nb0RpYWxlY3QgfSBmcm9tICcuL21vbmdvRGlhbGVjdCc7XG5cbmV4cG9ydCBjbGFzcyBNb25nb2RiUXVlcmllciBleHRlbmRzIEJhc2VRdWVyaWVyIHtcbiAgcHJpdmF0ZSBzZXNzaW9uOiBDbGllbnRTZXNzaW9uO1xuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGNvbm46IE1vbmdvQ2xpZW50LCByZWFkb25seSBkaWFsZWN0ID0gbmV3IE1vbmdvRGlhbGVjdCgpKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGFzeW5jIGluc2VydE1hbnk8RT4oZW50aXR5OiBUeXBlPEU+LCBwYXlsb2FkOiBFW10pIHtcbiAgICBjb25zdCBwZXJzaXN0YWJsZXMgPSBwYXlsb2FkLm1hcCgoaXQpID0+IHtcbiAgICAgIGNvbnN0IHBlcnNpc3RhYmxlUHJvcGVydGllcyA9IGZpbHRlclBlcnNpc3RhYmxlUHJvcGVydGllcyhlbnRpdHksIGl0KTtcbiAgICAgIHJldHVybiBwZXJzaXN0YWJsZVByb3BlcnRpZXMucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgICAgICBhY2Nba2V5XSA9IGl0W2tleV07XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCB7fSBhcyBPcHRpb25hbElkPEU+KTtcbiAgICB9KTtcblxuICAgIGxvZyhwZXJzaXN0YWJsZXMpO1xuXG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5jb2xsZWN0aW9uKGVudGl0eSkuaW5zZXJ0TWFueShwZXJzaXN0YWJsZXMsIHsgc2Vzc2lvbjogdGhpcy5zZXNzaW9uIH0pO1xuXG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMocmVzLmluc2VydGVkSWRzKTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZU1hbnk8RT4oZW50aXR5OiBUeXBlPEU+LCBxbTogUXVlcnlDcml0ZXJpYTxFPiwgcGF5bG9hZDogRSkge1xuICAgIGNvbnN0IHBlcnNpc3RhYmxlUHJvcGVydGllcyA9IGZpbHRlclBlcnNpc3RhYmxlUHJvcGVydGllcyhlbnRpdHksIHBheWxvYWQpO1xuICAgIGNvbnN0IHBlcnNpc3RhYmxlID0gcGVyc2lzdGFibGVQcm9wZXJ0aWVzLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgIGFjY1trZXldID0gcGF5bG9hZFtrZXldO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSBhcyBPcHRpb25hbElkPEU+KTtcblxuICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuZGlhbGVjdC5idWlsZEZpbHRlcihlbnRpdHksIHFtLiRmaWx0ZXIpO1xuICAgIGNvbnN0IHVwZGF0ZSA9IHsgJHNldDogcGVyc2lzdGFibGUgfTtcblxuICAgIGxvZyhmaWx0ZXIsIHVwZGF0ZSk7XG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmNvbGxlY3Rpb24oZW50aXR5KS51cGRhdGVNYW55KGZpbHRlciwgdXBkYXRlLCB7XG4gICAgICBzZXNzaW9uOiB0aGlzLnNlc3Npb24sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzLm1vZGlmaWVkQ291bnQ7XG4gIH1cblxuICBhc3luYyBmaW5kTWFueTxFPihlbnRpdHk6IFR5cGU8RT4sIHFtOiBRdWVyeTxFPikge1xuICAgIGNvbnN0IG1ldGEgPSBnZXRNZXRhKGVudGl0eSk7XG5cbiAgICBsZXQgZG9jdW1lbnRzOiBFW107XG5cbiAgICBpZiAoaGFzS2V5cyhxbS4kcG9wdWxhdGUpKSB7XG4gICAgICBjb25zdCBwaXBlbGluZSA9IHRoaXMuZGlhbGVjdC5idWlsZEFnZ3JlZ2F0aW9uUGlwZWxpbmUoZW50aXR5LCBxbSk7XG4gICAgICBsb2cocGlwZWxpbmUpO1xuICAgICAgZG9jdW1lbnRzID0gYXdhaXQgdGhpcy5jb2xsZWN0aW9uKGVudGl0eSkuYWdncmVnYXRlPEU+KHBpcGVsaW5lLCB7IHNlc3Npb246IHRoaXMuc2Vzc2lvbiB9KS50b0FycmF5KCk7XG4gICAgICBub3JtYWxpemVJZHMoZG9jdW1lbnRzLCBtZXRhKTtcbiAgICAgIGF3YWl0IHRoaXMucG9wdWxhdGVUb01hbnlSZWxhdGlvbnMoZW50aXR5LCBkb2N1bWVudHMsIHFtLiRwb3B1bGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGN1cnNvciA9IHRoaXMuY29sbGVjdGlvbihlbnRpdHkpLmZpbmQ8RT4oe30sIHsgc2Vzc2lvbjogdGhpcy5zZXNzaW9uIH0pO1xuXG4gICAgICBpZiAocW0uJGZpbHRlcikge1xuICAgICAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLmRpYWxlY3QuYnVpbGRGaWx0ZXIoZW50aXR5LCBxbS4kZmlsdGVyKTtcbiAgICAgICAgY3Vyc29yLmZpbHRlcihmaWx0ZXIpO1xuICAgICAgfVxuICAgICAgaWYgKHFtLiRwcm9qZWN0KSB7XG4gICAgICAgIGN1cnNvci5wcm9qZWN0KHFtLiRwcm9qZWN0KTtcbiAgICAgIH1cbiAgICAgIGlmIChxbS4kc29ydCkge1xuICAgICAgICBjdXJzb3Iuc29ydChxbS4kc29ydCk7XG4gICAgICB9XG4gICAgICBpZiAocW0uJHNraXApIHtcbiAgICAgICAgY3Vyc29yLnNraXAocW0uJHNraXApO1xuICAgICAgfVxuICAgICAgaWYgKHFtLiRsaW1pdCkge1xuICAgICAgICBjdXJzb3IubGltaXQocW0uJGxpbWl0KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzRGVidWcoKSkge1xuICAgICAgICBjdXJzb3IuZXhwbGFpbigoZXJyLCByZXN1bHQpID0+IGxvZyhlcnIsIHJlc3VsdCkpO1xuICAgICAgfVxuXG4gICAgICBkb2N1bWVudHMgPSBhd2FpdCBjdXJzb3IudG9BcnJheSgpO1xuICAgICAgbm9ybWFsaXplSWRzKGRvY3VtZW50cywgbWV0YSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRvY3VtZW50cztcbiAgfVxuXG4gIGZpbmRPbmVCeUlkPEU+KGVudGl0eTogVHlwZTxFPiwgaWQ6IE9iamVjdElkLCBxbzogUXVlcnlPbmU8RT4pIHtcbiAgICBjb25zdCBtZXRhID0gZ2V0TWV0YShlbnRpdHkpO1xuICAgIHJldHVybiB0aGlzLmZpbmRPbmU8RT4oZW50aXR5LCB7IC4uLnFvLCAkZmlsdGVyOiB7IFttZXRhLmlkLm5hbWVdOiBpZCB9IH0pO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlTWFueTxFPihlbnRpdHk6IFR5cGU8RT4sIHFtOiBRdWVyeUNyaXRlcmlhPEU+KSB7XG4gICAgY29uc3QgZmlsdGVyID0gdGhpcy5kaWFsZWN0LmJ1aWxkRmlsdGVyKGVudGl0eSwgcW0uJGZpbHRlcik7XG4gICAgbG9nKGZpbHRlcik7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5jb2xsZWN0aW9uKGVudGl0eSkuZGVsZXRlTWFueShmaWx0ZXIsIHtcbiAgICAgIHNlc3Npb246IHRoaXMuc2Vzc2lvbixcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzLmRlbGV0ZWRDb3VudDtcbiAgfVxuXG4gIGNvdW50PEU+KGVudGl0eTogVHlwZTxFPiwgcW06IFF1ZXJ5Q3JpdGVyaWE8RT4pIHtcbiAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLmRpYWxlY3QuYnVpbGRGaWx0ZXIoZW50aXR5LCBxbS4kZmlsdGVyKTtcbiAgICBsb2coZmlsdGVyKTtcbiAgICByZXR1cm4gdGhpcy5jb2xsZWN0aW9uKGVudGl0eSkuY291bnREb2N1bWVudHMoZmlsdGVyLCB7XG4gICAgICBzZXNzaW9uOiB0aGlzLnNlc3Npb24sXG4gICAgfSk7XG4gIH1cblxuICBnZXQgaGFzT3BlblRyYW5zYWN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnNlc3Npb24/LmluVHJhbnNhY3Rpb24oKTtcbiAgfVxuXG4gIGNvbGxlY3Rpb248RT4oZW50aXR5OiBUeXBlPEU+KSB7XG4gICAgY29uc3QgbWV0YSA9IGdldE1ldGEoZW50aXR5KTtcbiAgICByZXR1cm4gdGhpcy5jb25uLmRiKCkuY29sbGVjdGlvbihtZXRhLm5hbWUpO1xuICB9XG5cbiAgYXN5bmMgYmVnaW5UcmFuc2FjdGlvbigpIHtcbiAgICBpZiAodGhpcy5zZXNzaW9uPy5pblRyYW5zYWN0aW9uKCkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3BlbmRpbmcgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgbG9nKCdzdGFydFRyYW5zYWN0aW9uJyk7XG4gICAgdGhpcy5zZXNzaW9uID0gdGhpcy5jb25uLnN0YXJ0U2Vzc2lvbigpO1xuICAgIHRoaXMuc2Vzc2lvbi5zdGFydFRyYW5zYWN0aW9uKCk7XG4gIH1cblxuICBhc3luYyBjb21taXRUcmFuc2FjdGlvbigpIHtcbiAgICBpZiAoIXRoaXMuc2Vzc2lvbj8uaW5UcmFuc2FjdGlvbigpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdub3QgYSBwZW5kaW5nIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGxvZygnY29tbWl0VHJhbnNhY3Rpb24nKTtcbiAgICBhd2FpdCB0aGlzLnNlc3Npb24uY29tbWl0VHJhbnNhY3Rpb24oKTtcbiAgICB0aGlzLnNlc3Npb24uZW5kU2Vzc2lvbigpO1xuICB9XG5cbiAgYXN5bmMgcm9sbGJhY2tUcmFuc2FjdGlvbigpIHtcbiAgICBpZiAoIXRoaXMuc2Vzc2lvbj8uaW5UcmFuc2FjdGlvbigpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdub3QgYSBwZW5kaW5nIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGxvZygnYWJvcnRUcmFuc2FjdGlvbicpO1xuICAgIGF3YWl0IHRoaXMuc2Vzc2lvbi5hYm9ydFRyYW5zYWN0aW9uKCk7XG4gIH1cblxuICBhc3luYyByZWxlYXNlKCkge1xuICAgIGlmICh0aGlzLnNlc3Npb24/LmluVHJhbnNhY3Rpb24oKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigncGVuZGluZyB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jb25uLmNsb3NlKCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUlkczxFPihkb2NzOiBFIHwgRVtdLCBtZXRhOiBFbnRpdHlNZXRhPEU+KSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGRvY3MpKSB7XG4gICAgZm9yIChjb25zdCBkb2Mgb2YgZG9jcykge1xuICAgICAgbm9ybWFsaXplSWQ8RT4oZG9jLCBtZXRhKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbm9ybWFsaXplSWQ8RT4oZG9jcywgbWV0YSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplSWQ8RT4oZG9jOiBFLCBtZXRhOiBFbnRpdHlNZXRhPEU+KSB7XG4gIGlmICghZG9jKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IHJlcyA9IGRvYyBhcyBPcHRpb25hbElkPEU+O1xuICByZXNbbWV0YS5pZC5wcm9wZXJ0eV0gPSByZXMuX2lkO1xuICBkZWxldGUgcmVzLl9pZDtcbiAgZm9yIChjb25zdCByZWxQcm9wIG9mIG9iamVjdEtleXMobWV0YS5yZWxhdGlvbnMpKSB7XG4gICAgY29uc3QgcmVsT3B0cyA9IG1ldGEucmVsYXRpb25zW3JlbFByb3BdO1xuICAgIGNvbnN0IHJlbERhdGEgPSByZXNbcmVsUHJvcF07XG4gICAgaWYgKHR5cGVvZiByZWxEYXRhID09PSAnb2JqZWN0JyAmJiAhKHJlbERhdGEgaW5zdGFuY2VvZiBPYmplY3RJZCkpIHtcbiAgICAgIGNvbnN0IHJlbE1ldGEgPSBnZXRNZXRhKHJlbE9wdHMuZW50aXR5KCkpO1xuICAgICAgbm9ybWFsaXplSWRzKHJlbERhdGEsIHJlbE1ldGEpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzIGFzIEU7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZ29kYlF1ZXJpZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbW9uZ29kYlF1ZXJpZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUNBQXdGO0FBQ3hGLG9DQUF5QztBQUV6QywrQ0FBZ0Q7QUFDaEQsMERBQXFEO0FBQ3JELGdEQUFvRTtBQUNwRSx5Q0FBNEQ7QUFDNUQsaURBQThDO0FBRTlDLE1BQWEsY0FBZSxTQUFRLHFCQUFXO0lBRzdDLFlBQXFCLElBQWlCLEVBQVcsVUFBVSxJQUFJLDJCQUFZLEVBQUU7UUFDM0UsS0FBSyxFQUFFLENBQUM7UUFEVyxTQUFJLEdBQUosSUFBSSxDQUFhO1FBQVcsWUFBTyxHQUFQLE9BQU8sQ0FBcUI7SUFFN0UsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQUksTUFBZSxFQUFFLE9BQVk7UUFDL0MsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN4QixPQUFPO1NBQ1I7UUFFRCxPQUFPLEdBQUcsWUFBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXpCLE1BQU0sSUFBSSxHQUFHLG1CQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0IsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlELE1BQU0sU0FBUyxHQUFHLGlCQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU3RixTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDeEIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO2dCQUN0QixJQUFJ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TSxPQUFPLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdCLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxPQUFPLFlBQVksa0JBQVEsQ0FBQyxFQUFFO1lBQ2pFLE1BQU0sT0FBTyxHQUFHLG1CQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDMUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztTQUNoQztJQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxHQUFRLENBQUM7QUFDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vbmdvQ2xpZW50LCBDbGllbnRTZXNzaW9uLCBPcHRpb25hbElkLCBPYmplY3RJZCwgVXBkYXRlUXVlcnkgfSBmcm9tICdtb25nb2RiJztcbmltcG9ydCB7IGlzRGVidWcsIGxvZyB9IGZyb20gJ0B1cWwvY29yZSc7XG5pbXBvcnQgeyBRdWVyeSwgRW50aXR5TWV0YSwgUXVlcnlPbmUsIFR5cGUsIFF1ZXJ5Q3JpdGVyaWEgfSBmcm9tICdAdXFsL2NvcmUvdHlwZSc7XG5pbXBvcnQgeyBCYXNlUXVlcmllciB9IGZyb20gJ0B1cWwvY29yZS9xdWVyaWVyJztcbmltcG9ydCB7IGdldE1ldGEgfSBmcm9tICdAdXFsL2NvcmUvZW50aXR5L2RlY29yYXRvcic7XG5pbXBvcnQgeyBmaWx0ZXJQZXJzaXN0YWJsZVByb3BlcnRpZXMgfSBmcm9tICdAdXFsL2NvcmUvZW50aXR5L3V0aWwnO1xuaW1wb3J0IHsgY2xvbmUsIGhhc0tleXMsIG9iamVjdEtleXMgfSBmcm9tICdAdXFsL2NvcmUvdXRpbCc7XG5pbXBvcnQgeyBNb25nb0RpYWxlY3QgfSBmcm9tICcuL21vbmdvRGlhbGVjdCc7XG5cbmV4cG9ydCBjbGFzcyBNb25nb2RiUXVlcmllciBleHRlbmRzIEJhc2VRdWVyaWVyIHtcbiAgcHJpdmF0ZSBzZXNzaW9uOiBDbGllbnRTZXNzaW9uO1xuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGNvbm46IE1vbmdvQ2xpZW50LCByZWFkb25seSBkaWFsZWN0ID0gbmV3IE1vbmdvRGlhbGVjdCgpKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGFzeW5jIGluc2VydE1hbnk8RT4oZW50aXR5OiBUeXBlPEU+LCBwYXlsb2FkOiBFW10pIHtcbiAgICBpZiAocGF5bG9hZC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBwYXlsb2FkID0gY2xvbmUocGF5bG9hZCk7XG5cbiAgICBjb25zdCBtZXRhID0gZ2V0TWV0YShlbnRpdHkpO1xuICAgIGNvbnN0IHBheWxvYWRzID0gQXJyYXkuaXNBcnJheShwYXlsb2FkKSA/IHBheWxvYWQgOiBbcGF5bG9hZF07XG4gICAgY29uc3Qgb25JbnNlcnRzID0gb2JqZWN0S2V5cyhtZXRhLnByb3BlcnRpZXMpLmZpbHRlcigoY29sKSA9PiBtZXRhLnByb3BlcnRpZXNbY29sXS5vbkluc2VydCk7XG5cbiAgICBvbkluc2VydHMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBwYXlsb2Fkcy5mb3JFYWNoKChpdCkgPT4ge1xuICAgICAgICBpZiAoaXRba2V5XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaXRba2V5XSA9IG1ldGEucHJvcGVydGllc1trZXldLm9uSW5zZXJ0KCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgY29uc3QgcGVyc2lzdGFibGVQcm9wZXJ0aWVzID0gZmlsdGVyUGVyc2lzdGFibGVQcm9wZXJ0aWVzKGVudGl0eSwgcGF5bG9hZHNbMF0pO1xuXG4gICAgY29uc3QgcGVyc2lzdGFibGVzID0gcGF5bG9hZHMubWFwKChpdCkgPT5cbiAgICAgIHBlcnNpc3RhYmxlUHJvcGVydGllcy5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICAgIGFjY1trZXldID0gaXRba2V5XTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIHt9IGFzIE9wdGlvbmFsSWQ8RT4pXG4gICAgKTtcblxuICAgIGxvZygnaW5zZXJ0TWFueScsIGVudGl0eS5uYW1lLCBwZXJzaXN0YWJsZXMpO1xuXG4gICAgY29uc3QgeyBpbnNlcnRlZElkcyB9ID0gYXdhaXQgdGhpcy5jb2xsZWN0aW9uKGVudGl0eSkuaW5zZXJ0TWFueShwZXJzaXN0YWJsZXMsIHsgc2Vzc2lvbjogdGhpcy5zZXNzaW9uIH0pO1xuXG4gICAgY29uc3QgaWRzID0gT2JqZWN0LnZhbHVlcyhpbnNlcnRlZElkcyk7XG5cbiAgICBwYXlsb2Fkcy5mb3JFYWNoKChpdCwgaW5kZXgpID0+IHtcbiAgICAgIGl0W21ldGEuaWQucHJvcGVydHldID0gaWRzW2luZGV4XTtcbiAgICB9KTtcblxuICAgIGF3YWl0IHRoaXMuaW5zZXJ0UmVsYXRpb25zKGVudGl0eSwgcGF5bG9hZHMpO1xuXG4gICAgcmV0dXJuIGlkcztcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZU1hbnk8RT4oZW50aXR5OiBUeXBlPEU+LCBwYXlsb2FkOiBFLCBxbTogUXVlcnlDcml0ZXJpYTxFPikge1xuICAgIHBheWxvYWQgPSBjbG9uZShwYXlsb2FkKTtcblxuICAgIGNvbnN0IG1ldGEgPSBnZXRNZXRhKGVudGl0eSk7XG4gICAgY29uc3Qgb25VcGRhdGVzID0gb2JqZWN0S2V5cyhtZXRhLnByb3BlcnRpZXMpLmZpbHRlcigoY29sKSA9PiBtZXRhLnByb3BlcnRpZXNbY29sXS5vblVwZGF0ZSk7XG5cbiAgICBvblVwZGF0ZXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBpZiAocGF5bG9hZFtrZXldID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcGF5bG9hZFtrZXldID0gbWV0YS5wcm9wZXJ0aWVzW2tleV0ub25VcGRhdGUoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IHBlcnNpc3RhYmxlUHJvcGVydGllcyA9IGZpbHRlclBlcnNpc3RhYmxlUHJvcGVydGllcyhlbnRpdHksIHBheWxvYWQpO1xuXG4gICAgY29uc3QgcGVyc2lzdGFibGUgPSBwZXJzaXN0YWJsZVByb3BlcnRpZXMucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgICAgYWNjW2tleV0gPSBwYXlsb2FkW2tleV07XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9IGFzIE9wdGlvbmFsSWQ8RT4pO1xuXG4gICAgY29uc3QgZmlsdGVyID0gdGhpcy5kaWFsZWN0LndoZXJlKGVudGl0eSwgcW0uJGZpbHRlcik7XG4gICAgY29uc3QgdXBkYXRlID0geyAkc2V0OiBwZXJzaXN0YWJsZSB9O1xuXG4gICAgbG9nKCd1cGRhdGVNYW55JywgZW50aXR5Lm5hbWUsIGZpbHRlciwgdXBkYXRlKTtcblxuICAgIGNvbnN0IHsgbW9kaWZpZWRDb3VudCB9ID0gYXdhaXQgdGhpcy5jb2xsZWN0aW9uKGVudGl0eSkudXBkYXRlTWFueShmaWx0ZXIsIHVwZGF0ZSwge1xuICAgICAgc2Vzc2lvbjogdGhpcy5zZXNzaW9uLFxuICAgIH0pO1xuXG4gICAgYXdhaXQgdGhpcy51cGRhdGVSZWxhdGlvbnMoZW50aXR5LCBwYXlsb2FkLCBxbSk7XG5cbiAgICByZXR1cm4gbW9kaWZpZWRDb3VudDtcbiAgfVxuXG4gIGFzeW5jIGZpbmRNYW55PEU+KGVudGl0eTogVHlwZTxFPiwgcW06IFF1ZXJ5PEU+KSB7XG4gICAgY29uc3QgbWV0YSA9IGdldE1ldGEoZW50aXR5KTtcblxuICAgIGxldCBkb2N1bWVudHM6IEVbXTtcblxuICAgIGlmIChoYXNLZXlzKHFtLiRwb3B1bGF0ZSkpIHtcbiAgICAgIGNvbnN0IHBpcGVsaW5lID0gdGhpcy5kaWFsZWN0LmFnZ3JlZ2F0aW9uUGlwZWxpbmUoZW50aXR5LCBxbSk7XG4gICAgICBsb2coJ2ZpbmRNYW55JywgZW50aXR5Lm5hbWUsIEpTT04uc3RyaW5naWZ5KHBpcGVsaW5lLCBudWxsLCAyKSk7XG4gICAgICBkb2N1bWVudHMgPSBhd2FpdCB0aGlzLmNvbGxlY3Rpb24oZW50aXR5KS5hZ2dyZWdhdGU8RT4ocGlwZWxpbmUsIHsgc2Vzc2lvbjogdGhpcy5zZXNzaW9uIH0pLnRvQXJyYXkoKTtcbiAgICAgIG5vcm1hbGl6ZUlkcyhkb2N1bWVudHMsIG1ldGEpO1xuICAgICAgYXdhaXQgdGhpcy5wb3B1bGF0ZVRvTWFueVJlbGF0aW9ucyhlbnRpdHksIGRvY3VtZW50cywgcW0uJHBvcHVsYXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY3Vyc29yID0gdGhpcy5jb2xsZWN0aW9uKGVudGl0eSkuZmluZDxFPih7fSwgeyBzZXNzaW9uOiB0aGlzLnNlc3Npb24gfSk7XG5cbiAgICAgIGlmIChxbS4kZmlsdGVyKSB7XG4gICAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuZGlhbGVjdC53aGVyZShlbnRpdHksIHFtLiRmaWx0ZXIpO1xuICAgICAgICBjdXJzb3IuZmlsdGVyKGZpbHRlcik7XG4gICAgICB9XG4gICAgICBpZiAocW0uJHByb2plY3QpIHtcbiAgICAgICAgY3Vyc29yLnByb2plY3QodGhpcy5kaWFsZWN0LnByb2plY3QocW0uJHByb2plY3QpKTtcbiAgICAgIH1cbiAgICAgIGlmIChxbS4kc29ydCkge1xuICAgICAgICBjdXJzb3Iuc29ydChxbS4kc29ydCk7XG4gICAgICB9XG4gICAgICBpZiAocW0uJHNraXApIHtcbiAgICAgICAgY3Vyc29yLnNraXAocW0uJHNraXApO1xuICAgICAgfVxuICAgICAgaWYgKHFtLiRsaW1pdCkge1xuICAgICAgICBjdXJzb3IubGltaXQocW0uJGxpbWl0KTtcbiAgICAgIH1cblxuICAgICAgbG9nKCdmaW5kTWFueScsIGVudGl0eS5uYW1lLCBxbSk7XG5cbiAgICAgIGRvY3VtZW50cyA9IGF3YWl0IGN1cnNvci50b0FycmF5KCk7XG4gICAgICBub3JtYWxpemVJZHMoZG9jdW1lbnRzLCBtZXRhKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZG9jdW1lbnRzO1xuICB9XG5cbiAgZmluZE9uZUJ5SWQ8RT4oZW50aXR5OiBUeXBlPEU+LCBpZDogT2JqZWN0SWQsIHFvOiBRdWVyeU9uZTxFPikge1xuICAgIGNvbnN0IG1ldGEgPSBnZXRNZXRhKGVudGl0eSk7XG4gICAgcmV0dXJuIHRoaXMuZmluZE9uZTxFPihlbnRpdHksIHsgLi4ucW8sICRmaWx0ZXI6IHsgW21ldGEuaWQubmFtZV06IGlkIH0gfSk7XG4gIH1cblxuICBhc3luYyBkZWxldGVNYW55PEU+KGVudGl0eTogVHlwZTxFPiwgcW06IFF1ZXJ5Q3JpdGVyaWE8RT4pIHtcbiAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLmRpYWxlY3Qud2hlcmUoZW50aXR5LCBxbS4kZmlsdGVyKTtcbiAgICBsb2coJ2RlbGV0ZU1hbnknLCBlbnRpdHkubmFtZSwgZmlsdGVyKTtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmNvbGxlY3Rpb24oZW50aXR5KS5kZWxldGVNYW55KGZpbHRlciwge1xuICAgICAgc2Vzc2lvbjogdGhpcy5zZXNzaW9uLFxuICAgIH0pO1xuICAgIHJldHVybiByZXMuZGVsZXRlZENvdW50O1xuICB9XG5cbiAgY291bnQ8RT4oZW50aXR5OiBUeXBlPEU+LCBxbTogUXVlcnlDcml0ZXJpYTxFPiA9IHt9KSB7XG4gICAgY29uc3QgZmlsdGVyID0gdGhpcy5kaWFsZWN0LndoZXJlKGVudGl0eSwgcW0uJGZpbHRlcik7XG4gICAgbG9nKCdjb3VudCcsIGVudGl0eS5uYW1lLCBmaWx0ZXIpO1xuICAgIHJldHVybiB0aGlzLmNvbGxlY3Rpb24oZW50aXR5KS5jb3VudERvY3VtZW50cyhmaWx0ZXIsIHtcbiAgICAgIHNlc3Npb246IHRoaXMuc2Vzc2lvbixcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBoYXNPcGVuVHJhbnNhY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbj8uaW5UcmFuc2FjdGlvbigpO1xuICB9XG5cbiAgY29sbGVjdGlvbjxFPihlbnRpdHk6IFR5cGU8RT4pIHtcbiAgICBjb25zdCBtZXRhID0gZ2V0TWV0YShlbnRpdHkpO1xuICAgIHJldHVybiB0aGlzLmNvbm4uZGIoKS5jb2xsZWN0aW9uKG1ldGEubmFtZSk7XG4gIH1cblxuICBhc3luYyBiZWdpblRyYW5zYWN0aW9uKCkge1xuICAgIGlmICh0aGlzLnNlc3Npb24/LmluVHJhbnNhY3Rpb24oKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigncGVuZGluZyB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBsb2coJ2JlZ2luVHJhbnNhY3Rpb24nKTtcbiAgICB0aGlzLnNlc3Npb24gPSB0aGlzLmNvbm4uc3RhcnRTZXNzaW9uKCk7XG4gICAgdGhpcy5zZXNzaW9uLnN0YXJ0VHJhbnNhY3Rpb24oKTtcbiAgfVxuXG4gIGFzeW5jIGNvbW1pdFRyYW5zYWN0aW9uKCkge1xuICAgIGlmICghdGhpcy5zZXNzaW9uPy5pblRyYW5zYWN0aW9uKCkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ25vdCBhIHBlbmRpbmcgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgbG9nKCdjb21taXRUcmFuc2FjdGlvbicpO1xuICAgIGF3YWl0IHRoaXMuc2Vzc2lvbi5jb21taXRUcmFuc2FjdGlvbigpO1xuICAgIHRoaXMuc2Vzc2lvbi5lbmRTZXNzaW9uKCk7XG4gIH1cblxuICBhc3luYyByb2xsYmFja1RyYW5zYWN0aW9uKCkge1xuICAgIGlmICghdGhpcy5zZXNzaW9uPy5pblRyYW5zYWN0aW9uKCkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ25vdCBhIHBlbmRpbmcgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgbG9nKCdyb2xsYmFja1RyYW5zYWN0aW9uJyk7XG4gICAgYXdhaXQgdGhpcy5zZXNzaW9uLmFib3J0VHJhbnNhY3Rpb24oKTtcbiAgfVxuXG4gIGFzeW5jIHJlbGVhc2UoKSB7XG4gICAgaWYgKHRoaXMuc2Vzc2lvbj8uaW5UcmFuc2FjdGlvbigpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdwZW5kaW5nIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNvbm4uY2xvc2UoKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplSWRzPEU+KGRvY3M6IEUgfCBFW10sIG1ldGE6IEVudGl0eU1ldGE8RT4pIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoZG9jcykpIHtcbiAgICBkb2NzLmZvckVhY2goKGRvYykgPT4gbm9ybWFsaXplSWQoZG9jLCBtZXRhKSk7XG4gIH0gZWxzZSB7XG4gICAgbm9ybWFsaXplSWQ8RT4oZG9jcywgbWV0YSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplSWQ8RT4oZG9jOiBFLCBtZXRhOiBFbnRpdHlNZXRhPEU+KSB7XG4gIGlmICghZG9jKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IHJlcyA9IGRvYyBhcyBPcHRpb25hbElkPEU+O1xuICByZXNbbWV0YS5pZC5wcm9wZXJ0eV0gPSByZXMuX2lkO1xuICBkZWxldGUgcmVzLl9pZDtcbiAgb2JqZWN0S2V5cyhtZXRhLnJlbGF0aW9ucykuZm9yRWFjaCgocmVsUHJvcCkgPT4ge1xuICAgIGNvbnN0IHJlbE9wdHMgPSBtZXRhLnJlbGF0aW9uc1tyZWxQcm9wXTtcbiAgICBjb25zdCByZWxEYXRhID0gcmVzW3JlbFByb3BdO1xuICAgIGlmICh0eXBlb2YgcmVsRGF0YSA9PT0gJ29iamVjdCcgJiYgIShyZWxEYXRhIGluc3RhbmNlb2YgT2JqZWN0SWQpKSB7XG4gICAgICBjb25zdCByZWxNZXRhID0gZ2V0TWV0YShyZWxPcHRzLmVudGl0eSgpKTtcbiAgICAgIG5vcm1hbGl6ZUlkcyhyZWxEYXRhLCByZWxNZXRhKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzIGFzIEU7XG59XG4iXX0=
import { FilterQuery } from 'mongodb';
import { QueryFilter, Query, Type } from '@uql/core/type';
import { QueryFilter, Query, Type, QueryProject, QueryProjectProperties } from '@uql/core/type';
export declare class MongoDialect {
buildFilter<E>(entity: Type<E>, filter?: QueryFilter<E>): FilterQuery<E>;
buildAggregationPipeline<E>(entity: Type<E>, qm: Query<E>): object[];
where<E>(entity: Type<E>, filter?: QueryFilter<E>): FilterQuery<E>;
project<E>(project: QueryProject<E>): QueryProjectProperties<E>;
aggregationPipeline<E>(entity: Type<E>, qm: Query<E>): object[];
}

@@ -8,11 +8,11 @@ "use strict";

class MongoDialect {
buildFilter(entity, filter = {}) {
where(entity, filter = {}) {
const meta = decorator_1.getMeta(entity);
return util_1.objectKeys(filter).reduce((acc, prop) => {
const entry = filter[prop];
const value = filter[prop];
if (prop === '$and' || prop === '$or') {
acc[prop] = entry.map((filterIt) => this.buildFilter(entity, filterIt));
acc[prop] = value.map((filterIt) => this.where(entity, filterIt));
}
else {
const { key, val } = obtainFinalKeyValue(prop, entry, meta);
const { key, val } = obtainFinalKeyValue(prop, value, meta);
acc[key] = val;

@@ -23,7 +23,16 @@ }

}
buildAggregationPipeline(entity, qm) {
project(project) {
if (Array.isArray(project)) {
return project.reduce((acc, it) => {
acc[it] = true;
return acc;
}, {});
}
return project;
}
aggregationPipeline(entity, qm) {
const meta = decorator_1.getMeta(entity);
const pipeline = [];
if (util_1.hasKeys(qm.$filter)) {
pipeline.push({ $match: this.buildFilter(entity, qm.$filter) });
pipeline.push({ $match: this.where(entity, qm.$filter) });
}

@@ -45,3 +54,3 @@ for (const relKey in qm.$populate) {

from: relMeta.name,
localField: relKey,
localField: relOpts.references[0].source,
foreignField: '_id',

@@ -53,7 +62,7 @@ as: relKey,

else {
const mappedByKey = relOpts.mappedBy;
const prop = relOpts.mappedBy ? relOpts.references[0].target : relOpts.references[0].source;
pipeline.push({
$lookup: {
from: relMeta.name,
pipeline: [{ $match: { [mappedByKey]: qm.$filter[meta.id.name] } }],
pipeline: [{ $match: { [prop]: qm.$filter[meta.id.property] } }],
as: relKey,

@@ -76,2 +85,2 @@ },

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZ29EaWFsZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL21vbmdvRGlhbGVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQ0FBZ0Q7QUFFaEQsMERBQXFEO0FBQ3JELHlDQUFxRDtBQUVyRCxNQUFhLFlBQVk7SUFDdkIsV0FBVyxDQUFJLE1BQWUsRUFBRSxTQUF5QixFQUFFO1FBQ3pELE1BQU0sSUFBSSxHQUFHLG1CQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFN0IsT0FBTyxpQkFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUM3QyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0IsSUFBSSxJQUFJLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUU7Z0JBQ3JDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBd0IsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQzthQUN6RjtpQkFBTTtnQkFDTCxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLG1CQUFtQixDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzVELEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7YUFDaEI7WUFDRCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNULENBQUM7SUFFRCx3QkFBd0IsQ0FBSSxNQUFlLEVBQUUsRUFBWTtRQUN2RCxNQUFNLElBQUksR0FBRyxtQkFBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTdCLE1BQU0sUUFBUSxHQUFhLEVBQUUsQ0FBQztRQUU5QixJQUFJLGNBQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDdkIsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ2pFO1FBRUQsS0FBSyxNQUFNLE1BQU0sSUFBSSxFQUFFLENBQUMsU0FBUyxFQUFFO1lBQ2pDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdkMsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDWixNQUFNLElBQUksU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksSUFBSSxNQUFNLGtDQUFrQyxDQUFDLENBQUM7YUFDbEY7WUFDRCxJQUFJLE9BQU8sQ0FBQyxXQUFXLEtBQUssSUFBSSxJQUFJLE9BQU8sQ0FBQyxXQUFXLEtBQUssSUFBSSxFQUFFO2dCQUNoRSx5R0FBeUc7Z0JBQ3pHLFNBQVM7YUFDVjtZQUNELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNuQyxNQUFNLE9BQU8sR0FBRyxtQkFBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRW5DLElBQUksT0FBTyxDQUFDLFdBQVcsS0FBSyxJQUFJLEVBQUU7Z0JBQ2hDLFFBQVEsQ0FBQyxJQUFJLENBQUM7b0JBQ1osT0FBTyxFQUFFO3dCQUNQLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTt3QkFDbEIsVUFBVSxFQUFFLE1BQU07d0JBQ2xCLFlBQVksRUFBRSxLQUFLO3dCQUNuQixFQUFFLEVBQUUsTUFBTTtxQkFDWDtpQkFDRixDQUFDLENBQUM7YUFDSjtpQkFBTTtnQkFDTCxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsUUFBa0IsQ0FBQztnQkFDL0MsUUFBUSxDQUFDLElBQUksQ0FBQztvQkFDWixPQUFPLEVBQUU7d0JBQ1AsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO3dCQUNsQixRQUFRLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQzt3QkFDbkUsRUFBRSxFQUFFLE1BQU07cUJBQ1g7aUJBQ0YsQ0FBQyxDQUFDO2FBQ0o7WUFFRCxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksTUFBTSxFQUFFLEVBQUUsMEJBQTBCLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQ3RGO1FBRUQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztDQUNGO0FBOURELG9DQThEQztBQUVELFNBQVMsbUJBQW1CLENBQUksR0FBVyxFQUFFLEdBQXNCLEVBQUUsSUFBbUI7SUFDdEYsSUFBSSxHQUFHLEtBQUssS0FBSyxJQUFJLEdBQUcsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRTtRQUM3QyxNQUFNLFFBQVEsR0FBRyxHQUFHLFlBQVksa0JBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLGtCQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkUsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDO0tBQ3RDO0lBQ0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUN0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmlsdGVyUXVlcnksIE9iamVjdElkIH0gZnJvbSAnbW9uZ29kYic7XG5pbXBvcnQgeyBRdWVyeUZpbHRlciwgUXVlcnksIEVudGl0eU1ldGEsIFR5cGUgfSBmcm9tICdAdXFsL2NvcmUvdHlwZSc7XG5pbXBvcnQgeyBnZXRNZXRhIH0gZnJvbSAnQHVxbC9jb3JlL2VudGl0eS9kZWNvcmF0b3InO1xuaW1wb3J0IHsgaGFzS2V5cywgb2JqZWN0S2V5cyB9IGZyb20gJ0B1cWwvY29yZS91dGlsJztcblxuZXhwb3J0IGNsYXNzIE1vbmdvRGlhbGVjdCB7XG4gIGJ1aWxkRmlsdGVyPEU+KGVudGl0eTogVHlwZTxFPiwgZmlsdGVyOiBRdWVyeUZpbHRlcjxFPiA9IHt9KTogRmlsdGVyUXVlcnk8RT4ge1xuICAgIGNvbnN0IG1ldGEgPSBnZXRNZXRhKGVudGl0eSk7XG5cbiAgICByZXR1cm4gb2JqZWN0S2V5cyhmaWx0ZXIpLnJlZHVjZSgoYWNjLCBwcm9wKSA9PiB7XG4gICAgICBjb25zdCBlbnRyeSA9IGZpbHRlcltwcm9wXTtcbiAgICAgIGlmIChwcm9wID09PSAnJGFuZCcgfHwgcHJvcCA9PT0gJyRvcicpIHtcbiAgICAgICAgYWNjW3Byb3BdID0gZW50cnkubWFwKChmaWx0ZXJJdDogUXVlcnlGaWx0ZXI8RT4pID0+IHRoaXMuYnVpbGRGaWx0ZXIoZW50aXR5LCBmaWx0ZXJJdCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgeyBrZXksIHZhbCB9ID0gb2J0YWluRmluYWxLZXlWYWx1ZShwcm9wLCBlbnRyeSwgbWV0YSk7XG4gICAgICAgIGFjY1trZXldID0gdmFsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG4gIH1cblxuICBidWlsZEFnZ3JlZ2F0aW9uUGlwZWxpbmU8RT4oZW50aXR5OiBUeXBlPEU+LCBxbTogUXVlcnk8RT4pOiBvYmplY3RbXSB7XG4gICAgY29uc3QgbWV0YSA9IGdldE1ldGEoZW50aXR5KTtcblxuICAgIGNvbnN0IHBpcGVsaW5lOiBvYmplY3RbXSA9IFtdO1xuXG4gICAgaWYgKGhhc0tleXMocW0uJGZpbHRlcikpIHtcbiAgICAgIHBpcGVsaW5lLnB1c2goeyAkbWF0Y2g6IHRoaXMuYnVpbGRGaWx0ZXIoZW50aXR5LCBxbS4kZmlsdGVyKSB9KTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHJlbEtleSBpbiBxbS4kcG9wdWxhdGUpIHtcbiAgICAgIGNvbnN0IHJlbE9wdHMgPSBtZXRhLnJlbGF0aW9uc1tyZWxLZXldO1xuICAgICAgaWYgKCFyZWxPcHRzKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYCcke2VudGl0eS5uYW1lfS4ke3JlbEtleX0nIGlzIG5vdCBhbm5vdGF0ZWQgYXMgYSByZWxhdGlvbmApO1xuICAgICAgfVxuICAgICAgaWYgKHJlbE9wdHMuY2FyZGluYWxpdHkgIT09ICdtMScgJiYgcmVsT3B0cy5jYXJkaW5hbGl0eSAhPT0gJzExJykge1xuICAgICAgICAvLyAnbWFueVRvTWFueScgYW5kICdvbmVUb01hbnknIHdpbGwgbmVlZCBtdWx0aXBsZSBxdWVyaWVzIChzbyB0aGV5IHNob3VsZCBiZSByZXNvbHZlZCBpbiBhIGhpZ2hlciBsYXllcilcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCByZWxFbnRpdHkgPSByZWxPcHRzLmVudGl0eSgpO1xuICAgICAgY29uc3QgcmVsTWV0YSA9IGdldE1ldGEocmVsRW50aXR5KTtcblxuICAgICAgaWYgKHJlbE9wdHMuY2FyZGluYWxpdHkgPT09ICdtMScpIHtcbiAgICAgICAgcGlwZWxpbmUucHVzaCh7XG4gICAgICAgICAgJGxvb2t1cDoge1xuICAgICAgICAgICAgZnJvbTogcmVsTWV0YS5uYW1lLFxuICAgICAgICAgICAgbG9jYWxGaWVsZDogcmVsS2V5LFxuICAgICAgICAgICAgZm9yZWlnbkZpZWxkOiAnX2lkJyxcbiAgICAgICAgICAgIGFzOiByZWxLZXksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBtYXBwZWRCeUtleSA9IHJlbE9wdHMubWFwcGVkQnkgYXMgc3RyaW5nO1xuICAgICAgICBwaXBlbGluZS5wdXNoKHtcbiAgICAgICAgICAkbG9va3VwOiB7XG4gICAgICAgICAgICBmcm9tOiByZWxNZXRhLm5hbWUsXG4gICAgICAgICAgICBwaXBlbGluZTogW3sgJG1hdGNoOiB7IFttYXBwZWRCeUtleV06IHFtLiRmaWx0ZXJbbWV0YS5pZC5uYW1lXSB9IH1dLFxuICAgICAgICAgICAgYXM6IHJlbEtleSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcGlwZWxpbmUucHVzaCh7ICR1bndpbmQ6IHsgcGF0aDogYCQke3JlbEtleX1gLCBwcmVzZXJ2ZU51bGxBbmRFbXB0eUFycmF5czogdHJ1ZSB9IH0pO1xuICAgIH1cblxuICAgIHJldHVybiBwaXBlbGluZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBvYnRhaW5GaW5hbEtleVZhbHVlPEU+KGtleTogc3RyaW5nLCB2YWw6IHN0cmluZyB8IE9iamVjdElkLCBtZXRhOiBFbnRpdHlNZXRhPEU+KSB7XG4gIGlmIChrZXkgPT09ICdfaWQnIHx8IGtleSA9PT0gbWV0YS5pZC5wcm9wZXJ0eSkge1xuICAgIGNvbnN0IG9iamVjdElkID0gdmFsIGluc3RhbmNlb2YgT2JqZWN0SWQgPyB2YWwgOiBuZXcgT2JqZWN0SWQodmFsKTtcbiAgICByZXR1cm4geyBrZXk6ICdfaWQnLCB2YWw6IG9iamVjdElkIH07XG4gIH1cbiAgcmV0dXJuIHsga2V5LCB2YWwgfTtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZ29EaWFsZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL21vbmdvRGlhbGVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQ0FBZ0Q7QUFFaEQsMERBQXFEO0FBQ3JELHlDQUFxRDtBQUVyRCxNQUFhLFlBQVk7SUFDdkIsS0FBSyxDQUFJLE1BQWUsRUFBRSxTQUF5QixFQUFFO1FBQ25ELE1BQU0sSUFBSSxHQUFHLG1CQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFN0IsT0FBTyxpQkFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUM3QyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0IsSUFBSSxJQUFJLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUU7Z0JBQ3JDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBd0IsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQzthQUNuRjtpQkFBTTtnQkFDTCxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLG1CQUFtQixDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzVELEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7YUFDaEI7WUFDRCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsRUFBRSxFQUFTLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsT0FBTyxDQUFJLE9BQXdCO1FBQ2pDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMxQixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUU7Z0JBQ2hD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LElBQUksa0JBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUM7S0FDdEM7SUFDRCxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ3RCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWx0ZXJRdWVyeSwgT2JqZWN0SWQgfSBmcm9tICdtb25nb2RiJztcbmltcG9ydCB7IFF1ZXJ5RmlsdGVyLCBRdWVyeSwgRW50aXR5TWV0YSwgVHlwZSwgUXVlcnlQcm9qZWN0LCBRdWVyeVByb2plY3RQcm9wZXJ0aWVzIH0gZnJvbSAnQHVxbC9jb3JlL3R5cGUnO1xuaW1wb3J0IHsgZ2V0TWV0YSB9IGZyb20gJ0B1cWwvY29yZS9lbnRpdHkvZGVjb3JhdG9yJztcbmltcG9ydCB7IGhhc0tleXMsIG9iamVjdEtleXMgfSBmcm9tICdAdXFsL2NvcmUvdXRpbCc7XG5cbmV4cG9ydCBjbGFzcyBNb25nb0RpYWxlY3Qge1xuICB3aGVyZTxFPihlbnRpdHk6IFR5cGU8RT4sIGZpbHRlcjogUXVlcnlGaWx0ZXI8RT4gPSB7fSk6IEZpbHRlclF1ZXJ5PEU+IHtcbiAgICBjb25zdCBtZXRhID0gZ2V0TWV0YShlbnRpdHkpO1xuXG4gICAgcmV0dXJuIG9iamVjdEtleXMoZmlsdGVyKS5yZWR1Y2UoKGFjYywgcHJvcCkgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSBmaWx0ZXJbcHJvcF07XG4gICAgICBpZiAocHJvcCA9PT0gJyRhbmQnIHx8IHByb3AgPT09ICckb3InKSB7XG4gICAgICAgIGFjY1twcm9wXSA9IHZhbHVlLm1hcCgoZmlsdGVySXQ6IFF1ZXJ5RmlsdGVyPEU+KSA9PiB0aGlzLndoZXJlKGVudGl0eSwgZmlsdGVySXQpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHsga2V5LCB2YWwgfSA9IG9idGFpbkZpbmFsS2V5VmFsdWUocHJvcCwgdmFsdWUsIG1ldGEpO1xuICAgICAgICBhY2Nba2V5XSA9IHZhbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30gYXMgYW55KTtcbiAgfVxuXG4gIHByb2plY3Q8RT4ocHJvamVjdDogUXVlcnlQcm9qZWN0PEU+KTogUXVlcnlQcm9qZWN0UHJvcGVydGllczxFPiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocHJvamVjdCkpIHtcbiAgICAgIHJldHVybiBwcm9qZWN0LnJlZHVjZSgoYWNjLCBpdCkgPT4ge1xuICAgICAgICBhY2NbaXRdID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIHt9IGFzIFF1ZXJ5UHJvamVjdFByb3BlcnRpZXM8RT4pO1xuICAgIH1cbiAgICByZXR1cm4gcHJvamVjdCBhcyBRdWVyeVByb2plY3RQcm9wZXJ0aWVzPEU+O1xuICB9XG5cbiAgYWdncmVnYXRpb25QaXBlbGluZTxFPihlbnRpdHk6IFR5cGU8RT4sIHFtOiBRdWVyeTxFPik6IG9iamVjdFtdIHtcbiAgICBjb25zdCBtZXRhID0gZ2V0TWV0YShlbnRpdHkpO1xuXG4gICAgY29uc3QgcGlwZWxpbmU6IG9iamVjdFtdID0gW107XG5cbiAgICBpZiAoaGFzS2V5cyhxbS4kZmlsdGVyKSkge1xuICAgICAgcGlwZWxpbmUucHVzaCh7ICRtYXRjaDogdGhpcy53aGVyZShlbnRpdHksIHFtLiRmaWx0ZXIpIH0pO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgcmVsS2V5IGluIHFtLiRwb3B1bGF0ZSkge1xuICAgICAgY29uc3QgcmVsT3B0cyA9IG1ldGEucmVsYXRpb25zW3JlbEtleV07XG4gICAgICBpZiAoIXJlbE9wdHMpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgJyR7ZW50aXR5Lm5hbWV9LiR7cmVsS2V5fScgaXMgbm90IGFubm90YXRlZCBhcyBhIHJlbGF0aW9uYCk7XG4gICAgICB9XG4gICAgICBpZiAocmVsT3B0cy5jYXJkaW5hbGl0eSAhPT0gJ20xJyAmJiByZWxPcHRzLmNhcmRpbmFsaXR5ICE9PSAnMTEnKSB7XG4gICAgICAgIC8vICdtYW55VG9NYW55JyBhbmQgJ29uZVRvTWFueScgd2lsbCBuZWVkIG11bHRpcGxlIHF1ZXJpZXMgKHNvIHRoZXkgc2hvdWxkIGJlIHJlc29sdmVkIGluIGEgaGlnaGVyIGxheWVyKVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlbEVudGl0eSA9IHJlbE9wdHMuZW50aXR5KCk7XG4gICAgICBjb25zdCByZWxNZXRhID0gZ2V0TWV0YShyZWxFbnRpdHkpO1xuXG4gICAgICBpZiAocmVsT3B0cy5jYXJkaW5hbGl0eSA9PT0gJ20xJykge1xuICAgICAgICBwaXBlbGluZS5wdXNoKHtcbiAgICAgICAgICAkbG9va3VwOiB7XG4gICAgICAgICAgICBmcm9tOiByZWxNZXRhLm5hbWUsXG4gICAgICAgICAgICBsb2NhbEZpZWxkOiByZWxPcHRzLnJlZmVyZW5jZXNbMF0uc291cmNlLFxuICAgICAgICAgICAgZm9yZWlnbkZpZWxkOiAnX2lkJyxcbiAgICAgICAgICAgIGFzOiByZWxLZXksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBwcm9wID0gcmVsT3B0cy5tYXBwZWRCeSA/IHJlbE9wdHMucmVmZXJlbmNlc1swXS50YXJnZXQgOiByZWxPcHRzLnJlZmVyZW5jZXNbMF0uc291cmNlO1xuICAgICAgICBwaXBlbGluZS5wdXNoKHtcbiAgICAgICAgICAkbG9va3VwOiB7XG4gICAgICAgICAgICBmcm9tOiByZWxNZXRhLm5hbWUsXG4gICAgICAgICAgICBwaXBlbGluZTogW3sgJG1hdGNoOiB7IFtwcm9wXTogcW0uJGZpbHRlclttZXRhLmlkLnByb3BlcnR5XSB9IH1dLFxuICAgICAgICAgICAgYXM6IHJlbEtleSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcGlwZWxpbmUucHVzaCh7ICR1bndpbmQ6IHsgcGF0aDogYCQke3JlbEtleX1gLCBwcmVzZXJ2ZU51bGxBbmRFbXB0eUFycmF5czogdHJ1ZSB9IH0pO1xuICAgIH1cblxuICAgIHJldHVybiBwaXBlbGluZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBvYnRhaW5GaW5hbEtleVZhbHVlPEU+KGtleTogc3RyaW5nLCB2YWw6IGFueSwgbWV0YTogRW50aXR5TWV0YTxFPikge1xuICBpZiAoa2V5ID09PSAnX2lkJyB8fCBrZXkgPT09IG1ldGEuaWQucHJvcGVydHkpIHtcbiAgICBjb25zdCBvYmplY3RJZCA9IHZhbCBpbnN0YW5jZW9mIE9iamVjdElkID8gdmFsIDogbmV3IE9iamVjdElkKHZhbCk7XG4gICAgcmV0dXJuIHsga2V5OiAnX2lkJywgdmFsOiBvYmplY3RJZCB9O1xuICB9XG4gIHJldHVybiB7IGtleSwgdmFsIH07XG59XG4iXX0=

@@ -5,3 +5,3 @@ {

"license": "MIT",
"version": "0.4.20",
"version": "0.4.21",
"main": "index.js",

@@ -19,8 +19,8 @@ "types": "index.d.ts",

"peerDependencies": {
"@uql/core": "^0.4.16"
"@uql/core": "^0.4.20"
},
"devDependencies": {
"@types/mongodb": "^3.6.17",
"@types/node": "^15.12.0",
"@uql/core": "^0.4.20",
"@types/node": "^15.12.2",
"@uql/core": "^0.4.21",
"copyfiles": "^2.4.1",

@@ -27,0 +27,0 @@ "rimraf": "^3.0.2",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc