| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 | // This collection shouldn't be manipulated directly by instead throw the// `UnsavedEdits` API on the client.UnsavedEditCollection = new Mongo.Collection('unsaved-edits');UnsavedEditCollection.attachSchema(  new SimpleSchema({    fieldName: {      type: String,    },    docId: {      type: String,    },    value: {      type: String,    },    userId: {      type: String,      // eslint-disable-next-line consistent-return      autoValue() {        if (this.isInsert && !this.isSet) {          return this.userId;        }      },    },    createdAt: {      type: Date,      optional: true,      // eslint-disable-next-line consistent-return      autoValue() {        if (this.isInsert) {          return new Date();        } else if (this.isUpsert) {          return { $setOnInsert: new Date() };        } else {          this.unset();        }      },    },    modifiedAt: {      type: Date,      denyUpdate: false,      // eslint-disable-next-line consistent-return      autoValue() {        if (this.isInsert || this.isUpsert || this.isUpdate) {          return new Date();        } else {          this.unset();        }      },    },  }),);if (Meteor.isServer) {  function isAuthor(userId, doc, fieldNames = []) {    return userId === doc.userId && fieldNames.indexOf('userId') === -1;  }  Meteor.startup(() => {    UnsavedEditCollection._collection._ensureIndex({ modifiedAt: -1 });    UnsavedEditCollection._collection._ensureIndex({ userId: 1 });  });  UnsavedEditCollection.allow({    insert: isAuthor,    update: isAuthor,    remove: isAuthor,    fetch: ['userId'],  });}export default UnsavedEditCollection;
 |