firewalk
Version:
A collection traversal library for Firestore
129 lines • 6.5 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
};
var _BasicDefaultMigratorImpl_instances, _BasicDefaultMigratorImpl_migrate;
Object.defineProperty(exports, "__esModule", { value: true });
exports.BasicDefaultMigratorImpl = void 0;
const abstract_1 = require("./abstract");
const errors_1 = require("../errors");
class BasicDefaultMigratorImpl extends abstract_1.AbstractMigrator {
constructor(traverser, registeredCallbacks, migrationPredicates) {
super(registeredCallbacks, migrationPredicates);
_BasicDefaultMigratorImpl_instances.add(this);
this.traverser = traverser;
}
withPredicate(predicate) {
return new BasicDefaultMigratorImpl(this.traverser, this.registeredCallbacks, [
...this.migrationPredicates,
predicate,
]);
}
withTraverser(traverser) {
return new BasicDefaultMigratorImpl(traverser, this.registeredCallbacks, this.migrationPredicates);
}
set(data, options) {
return __awaiter(this, void 0, void 0, function* () {
return __classPrivateFieldGet(this, _BasicDefaultMigratorImpl_instances, "m", _BasicDefaultMigratorImpl_migrate).call(this, (doc) => __awaiter(this, void 0, void 0, function* () {
if (options === undefined) {
// Signature 2
yield doc.ref.set(data);
}
else {
// Signature 1
yield doc.ref.set(data, options);
}
}));
});
}
setWithDerivedData(getData, options) {
return __awaiter(this, void 0, void 0, function* () {
return __classPrivateFieldGet(this, _BasicDefaultMigratorImpl_instances, "m", _BasicDefaultMigratorImpl_migrate).call(this, (doc) => __awaiter(this, void 0, void 0, function* () {
if (options === undefined) {
// Signature 2
const data = getData(doc);
yield doc.ref.set(data);
}
else {
// Signature 1
const data = getData(doc);
yield doc.ref.set(data, options);
}
}));
});
}
update(dataOrField, preconditionOrValue, ...moreFieldsOrPrecondition) {
return __classPrivateFieldGet(this, _BasicDefaultMigratorImpl_instances, "m", _BasicDefaultMigratorImpl_migrate).call(this, (doc) => __awaiter(this, void 0, void 0, function* () {
if (typeof dataOrField === 'string' ||
dataOrField instanceof this.firestoreConstructor.FieldPath) {
// Signature 2
const field = dataOrField;
const value = preconditionOrValue;
yield doc.ref.update(field, value, ...moreFieldsOrPrecondition);
}
else if (typeof dataOrField === 'object' && dataOrField !== null) {
// Signature 1
const data = dataOrField;
const precondition = preconditionOrValue;
if (precondition === undefined) {
yield doc.ref.update(data);
}
else {
yield doc.ref.update(data, precondition);
}
}
else {
throw new errors_1.IllegalArgumentError(`Unsupported signature detected. The 'dataOrField' argument cannot be undefined. The 'dataOrField' argument must be a string, a FieldPath, or an object.`);
}
}));
}
updateWithDerivedData(getData, precondition) {
return __classPrivateFieldGet(this, _BasicDefaultMigratorImpl_instances, "m", _BasicDefaultMigratorImpl_migrate).call(this, (doc) => __awaiter(this, void 0, void 0, function* () {
const data = getData(doc);
if (Array.isArray(data)) {
// Signature 2
yield doc.ref.update(...data);
}
else if (typeof data === 'object' && data !== null) {
// Signature 1
if (precondition === undefined) {
yield doc.ref.update(data);
}
else {
yield doc.ref.update(data, precondition);
}
}
else {
throw new errors_1.IllegalArgumentError(`Unsupported signature detected. The 'data' argument must be an array, an object, or a valid Firestore update signature.`);
}
}));
}
}
exports.BasicDefaultMigratorImpl = BasicDefaultMigratorImpl;
_BasicDefaultMigratorImpl_instances = new WeakSet(), _BasicDefaultMigratorImpl_migrate = function _BasicDefaultMigratorImpl_migrate(migrateDoc) {
return __awaiter(this, void 0, void 0, function* () {
return this.migrateWithTraverser((batchDocs) => __awaiter(this, void 0, void 0, function* () {
let migratedDocCount = 0;
const promises = batchDocs.map((doc) => __awaiter(this, void 0, void 0, function* () {
if (this.shouldMigrateDoc(doc)) {
yield migrateDoc(doc);
migratedDocCount++;
}
}));
yield Promise.all(promises);
return migratedDocCount;
}));
});
};
//# sourceMappingURL=BasicDefaultMigratorImpl.js.map