mjs nodejs support
This commit is contained in:
@@ -2,47 +2,15 @@
|
||||
* @module structs
|
||||
*/
|
||||
|
||||
import { getStructReference } from '../utils/structReferences.js'
|
||||
import * as ID from '../utils/ID.js'
|
||||
import { stringifyID } from '../protocols/syncProtocol.js'
|
||||
import { writeStructToTransaction } from '../utils/Transaction.js'
|
||||
import * as decoding from '../lib/decoding.js'
|
||||
import * as encoding from '../lib/encoding.js'
|
||||
import { Item } from './Item.js' // eslint-disable-line
|
||||
import { Y } from '../utils/Y.js' // eslint-disable-line
|
||||
|
||||
/**
|
||||
* @private
|
||||
* Delete all items in an ID-range.
|
||||
* Does not create delete operations!
|
||||
* TODO: implement getItemCleanStartNode for better performance (only one lookup).
|
||||
*/
|
||||
export const deleteItemRange = (y, user, clock, range, gcChildren) => {
|
||||
let item = y.os.getItemCleanStart(ID.createID(user, clock))
|
||||
if (item !== null) {
|
||||
if (!item._deleted) {
|
||||
item._splitAt(y, range)
|
||||
item._delete(y, false, true)
|
||||
}
|
||||
let itemLen = item._length
|
||||
range -= itemLen
|
||||
clock += itemLen
|
||||
if (range > 0) {
|
||||
let node = y.os.findNode(ID.createID(user, clock))
|
||||
while (node !== null && node.val !== null && range > 0 && node.val._id.equals(ID.createID(user, clock))) {
|
||||
const nodeVal = node.val
|
||||
if (!nodeVal._deleted) {
|
||||
nodeVal._splitAt(y, range)
|
||||
nodeVal._delete(y, false, gcChildren)
|
||||
}
|
||||
const nodeLen = nodeVal._length
|
||||
range -= nodeLen
|
||||
clock += nodeLen
|
||||
node = node.next()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
import { getStructReference } from '../utils/structReferences.mjs'
|
||||
import * as ID from '../utils/ID.mjs'
|
||||
import { stringifyID } from '../protocols/syncProtocol.mjs'
|
||||
import { writeStructToTransaction } from '../utils/Transaction.mjs'
|
||||
import * as decoding from '../lib/decoding.mjs'
|
||||
import * as encoding from '../lib/encoding.mjs'
|
||||
import { Item } from './Item.mjs' // eslint-disable-line
|
||||
import { Y } from '../utils/Y.mjs' // eslint-disable-line
|
||||
import { deleteItemRange } from '../utils/structManipulation.mjs'
|
||||
|
||||
/**
|
||||
* @private
|
||||
@@ -2,12 +2,12 @@
|
||||
* @module structs
|
||||
*/
|
||||
|
||||
import { getStructReference } from '../utils/structReferences.js'
|
||||
import * as ID from '../utils/ID.js'
|
||||
import { writeStructToTransaction } from '../utils/Transaction.js'
|
||||
import * as decoding from '../lib/decoding.js'
|
||||
import * as encoding from '../lib/encoding.js'
|
||||
import { Y } from '../utils/Y.js' // eslint-disable-line
|
||||
import { getStructReference } from '../utils/structReferences.mjs'
|
||||
import * as ID from '../utils/ID.mjs'
|
||||
import { writeStructToTransaction } from '../utils/Transaction.mjs'
|
||||
import * as decoding from '../lib/decoding.mjs'
|
||||
import * as encoding from '../lib/encoding.mjs'
|
||||
import { Y } from '../utils/Y.mjs' // eslint-disable-line
|
||||
|
||||
// TODO should have the same base class as Item
|
||||
export class GC {
|
||||
@@ -2,15 +2,15 @@
|
||||
* @module structs
|
||||
*/
|
||||
|
||||
import { getStructReference } from '../utils/structReferences.js'
|
||||
import * as ID from '../utils/ID.js'
|
||||
import { Delete } from './Delete.js'
|
||||
import { transactionTypeChanged, writeStructToTransaction } from '../utils/Transaction.js'
|
||||
import { GC } from './GC.js'
|
||||
import * as encoding from '../lib/encoding.js'
|
||||
import * as decoding from '../lib/decoding.js'
|
||||
import { Y } from '../utils/Y.js'
|
||||
import { Type } from './Type.js' // eslint-disable-line
|
||||
import { getStructReference } from '../utils/structReferences.mjs'
|
||||
import * as ID from '../utils/ID.mjs'
|
||||
import { Delete } from './Delete.mjs'
|
||||
import { transactionTypeChanged, writeStructToTransaction } from '../utils/Transaction.mjs'
|
||||
import { GC } from './GC.mjs'
|
||||
import * as encoding from '../lib/encoding.mjs'
|
||||
import * as decoding from '../lib/decoding.mjs'
|
||||
import { Y } from '../utils/Y.mjs'
|
||||
import { Type } from './Type.mjs' // eslint-disable-line
|
||||
|
||||
/**
|
||||
* @private
|
||||
@@ -2,11 +2,11 @@
|
||||
* @module structs
|
||||
*/
|
||||
|
||||
import { Item } from './Item.js'
|
||||
import { logItemHelper } from '../protocols/syncProtocol.js'
|
||||
import * as encoding from '../lib/encoding.js'
|
||||
import * as decoding from '../lib/decoding.js'
|
||||
import { Y } from '../utils/Y.js' // eslint-disable-line
|
||||
import { Item } from './Item.mjs'
|
||||
import { logItemHelper } from '../protocols/syncProtocol.mjs'
|
||||
import * as encoding from '../lib/encoding.mjs'
|
||||
import * as decoding from '../lib/decoding.mjs'
|
||||
import { Y } from '../utils/Y.mjs' // eslint-disable-line
|
||||
|
||||
export class ItemEmbed extends Item {
|
||||
constructor () {
|
||||
@@ -2,11 +2,11 @@
|
||||
* @module structs
|
||||
*/
|
||||
|
||||
import { Item } from './Item.js'
|
||||
import { logItemHelper } from '../protocols/syncProtocol.js'
|
||||
import * as encoding from '../lib/encoding.js'
|
||||
import * as decoding from '../lib/decoding.js'
|
||||
import { Y } from '../utils/Y.js' // eslint-disable-line
|
||||
import { Item } from './Item.mjs'
|
||||
import { logItemHelper } from '../protocols/syncProtocol.mjs'
|
||||
import * as encoding from '../lib/encoding.mjs'
|
||||
import * as decoding from '../lib/decoding.mjs'
|
||||
import { Y } from '../utils/Y.mjs' // eslint-disable-line
|
||||
|
||||
export class ItemFormat extends Item {
|
||||
constructor () {
|
||||
@@ -2,11 +2,11 @@
|
||||
* @module structs
|
||||
*/
|
||||
|
||||
import { Item, splitHelper } from './Item.js'
|
||||
import { logItemHelper } from '../protocols/syncProtocol.js'
|
||||
import * as encoding from '../lib/encoding.js'
|
||||
import * as decoding from '../lib/decoding.js'
|
||||
import { Y } from '../utils/Y.js' // eslint-disable-line
|
||||
import { Item, splitHelper } from './Item.mjs'
|
||||
import { logItemHelper } from '../protocols/syncProtocol.mjs'
|
||||
import * as encoding from '../lib/encoding.mjs'
|
||||
import * as decoding from '../lib/decoding.mjs'
|
||||
import { Y } from '../utils/Y.mjs' // eslint-disable-line
|
||||
|
||||
export class ItemJSON extends Item {
|
||||
constructor () {
|
||||
@@ -2,11 +2,11 @@
|
||||
* @module structs
|
||||
*/
|
||||
|
||||
import { Item, splitHelper } from './Item.js'
|
||||
import { logItemHelper } from '../protocols/syncProtocol.js'
|
||||
import * as encoding from '../lib/encoding.js'
|
||||
import * as decoding from '../lib/decoding.js'
|
||||
import { Y } from '../utils/Y.js' // eslint-disable-line
|
||||
import { Item, splitHelper } from './Item.mjs'
|
||||
import { logItemHelper } from '../protocols/syncProtocol.mjs'
|
||||
import * as encoding from '../lib/encoding.mjs'
|
||||
import * as decoding from '../lib/decoding.mjs'
|
||||
import { Y } from '../utils/Y.mjs' // eslint-disable-line
|
||||
|
||||
export class ItemString extends Item {
|
||||
constructor () {
|
||||
@@ -2,11 +2,11 @@
|
||||
* @module structs
|
||||
*/
|
||||
|
||||
import { Item } from './Item.js'
|
||||
import { EventHandler } from '../utils/EventHandler.js'
|
||||
import { createID } from '../utils/ID.js'
|
||||
import { YEvent } from '../utils/YEvent.js'
|
||||
import { Y } from '../utils/Y.js' // eslint-disable-line
|
||||
import { Item } from './Item.mjs'
|
||||
import { EventHandler } from '../utils/EventHandler.mjs'
|
||||
import { createID } from '../utils/ID.mjs'
|
||||
import { YEvent } from '../utils/YEvent.mjs'
|
||||
import { Y } from '../utils/Y.mjs' // eslint-disable-line
|
||||
|
||||
// restructure children as if they were inserted one after another
|
||||
const integrateChildren = (y, start) => {
|
||||
Reference in New Issue
Block a user