| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- /* eslint-disable
- camelcase,
- no-unused-vars,
- */
- // TODO: This file was created by bulk-decaffeinate.
- // Fix any style issues and re-enable lint.
- /*
- * decaffeinate suggestions:
- * DS101: Remove unnecessary use of Array.from
- * DS102: Remove unnecessary code created because of implicit returns
- * DS207: Consider shorter variations of null checks
- * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
- */
- let ShareJsDB
- const Keys = require('./UpdateKeys')
- const RedisManager = require('./RedisManager')
- const Errors = require('./Errors')
- module.exports = ShareJsDB = class ShareJsDB {
- constructor(project_id, doc_id, lines, version) {
- this.project_id = project_id
- this.doc_id = doc_id
- this.lines = lines
- this.version = version
- this.appliedOps = {}
- // ShareJS calls this detacted from the instance, so we need
- // bind it to keep our context that can access @appliedOps
- this.writeOp = this._writeOp.bind(this)
- }
- getOps(doc_key, start, end, callback) {
- if (start === end) {
- return callback(null, [])
- }
- // In redis, lrange values are inclusive.
- if (end != null) {
- end--
- } else {
- end = -1
- }
- const [project_id, doc_id] = Array.from(
- Keys.splitProjectIdAndDocId(doc_key)
- )
- return RedisManager.getPreviousDocOps(doc_id, start, end, callback)
- }
- _writeOp(doc_key, opData, callback) {
- if (this.appliedOps[doc_key] == null) {
- this.appliedOps[doc_key] = []
- }
- this.appliedOps[doc_key].push(opData)
- return callback()
- }
- getSnapshot(doc_key, callback) {
- if (
- doc_key !== Keys.combineProjectIdAndDocId(this.project_id, this.doc_id)
- ) {
- return callback(
- new Errors.NotFoundError(
- `unexpected doc_key ${doc_key}, expected ${Keys.combineProjectIdAndDocId(
- this.project_id,
- this.doc_id
- )}`
- )
- )
- } else {
- return callback(null, {
- snapshot: this.lines.join('\n'),
- v: parseInt(this.version, 10),
- type: 'text',
- })
- }
- }
- // To be able to remove a doc from the ShareJS memory
- // we need to called Model::delete, which calls this
- // method on the database. However, we will handle removing
- // it from Redis ourselves
- delete(docName, dbMeta, callback) {
- return callback()
- }
- }
|