@ckeditor/ckeditor5-operations-compressor 41.2.1 → 41.3.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/content-index.css +4 -0
- package/dist/editor-index.css +4 -0
- package/dist/index.css +4 -0
- package/dist/types/actioncompressor/actioncompressor.d.ts +64 -0
- package/dist/types/actioncompressor/deletingactioncompressor.d.ts +32 -0
- package/dist/types/actioncompressor/forwarddeletingactioncompressor.d.ts +32 -0
- package/dist/types/actioncompressor/typingactioncompressor.d.ts +32 -0
- package/dist/types/actioncompressor/userselectionactioncompressor.d.ts +20 -0
- package/dist/types/compressor.d.ts +49 -0
- package/dist/types/index.d.ts +9 -0
- package/dist/types/operationcompressor/annotationmarkeroperationcompressor.d.ts +26 -0
- package/dist/types/operationcompressor/attributeoperationcompressor.d.ts +21 -0
- package/dist/types/operationcompressor/insertoperationcompressor.d.ts +21 -0
- package/dist/types/operationcompressor/markeroperationcompressor.d.ts +17 -0
- package/dist/types/operationcompressor/nooperationcompressor.d.ts +24 -0
- package/dist/types/operationcompressor/operationcompressor.d.ts +32 -0
- package/dist/types/protobufdescriptions.d.ts +8 -0
- package/dist/types/protobuffactory.d.ts +9 -0
- package/dist/types/utils.d.ts +34 -0
- package/package.json +3 -2
- package/src/actioncompressor/actioncompressor.js +1 -1
- package/src/actioncompressor/deletingactioncompressor.js +1 -1
- package/src/actioncompressor/forwarddeletingactioncompressor.js +1 -1
- package/src/actioncompressor/typingactioncompressor.js +1 -1
- package/src/actioncompressor/userselectionactioncompressor.js +1 -1
- package/src/compressor.js +1 -1
- package/src/index.d.ts +5 -0
- package/src/index.js +23 -0
- package/src/lib/compiledmessages.js +1 -1
- package/src/operationcompressor/annotationmarkeroperationcompressor.js +1 -1
- package/src/operationcompressor/attributeoperationcompressor.js +1 -1
- package/src/operationcompressor/insertoperationcompressor.js +1 -1
- package/src/operationcompressor/markeroperationcompressor.js +1 -1
- package/src/operationcompressor/nooperationcompressor.js +1 -1
- package/src/operationcompressor/operationcompressor.js +1 -1
- package/src/protobufdescriptions.js +1 -1
- package/src/protobuffactory.js +1 -1
- package/src/utils.js +1 -1
package/dist/index.css
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
7
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
8
|
+
*/
|
|
9
|
+
import type { CompressedOperationsData, default as Compressor } from '../compressor.js';
|
|
10
|
+
/**
|
|
11
|
+
* * Compresses and decompresses multiple operations into the one buffer.
|
|
12
|
+
*/
|
|
13
|
+
export default abstract class ActionCompressor {
|
|
14
|
+
constructor(id: number, context: Compressor);
|
|
15
|
+
/**
|
|
16
|
+
* Combines and compress operations from the list.
|
|
17
|
+
* Operations are consumed as long as match this compressor.
|
|
18
|
+
*
|
|
19
|
+
* @param result Object to which compression result should be added.
|
|
20
|
+
* @param operations List of operations in JSON format to compress.
|
|
21
|
+
* @returns `true` when operation is consumed `false` otherwise.
|
|
22
|
+
*/
|
|
23
|
+
compress(result: CompressedOperationsData, operations: Array<any>): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Decompress and split compressed operations. Decompressed operations are consumed (removed from the input data).
|
|
26
|
+
*
|
|
27
|
+
* @param result Decompressed operations in JSON format.
|
|
28
|
+
* @param data Compressed operations data.
|
|
29
|
+
*/
|
|
30
|
+
decompress(result: Array<any>, data: CompressedOperationsData): void;
|
|
31
|
+
/**
|
|
32
|
+
* Compresses single operation using a proper compressor.
|
|
33
|
+
*
|
|
34
|
+
* @param operation Operation in JSON format.
|
|
35
|
+
* @returns Operation JSON compressed to the binary format.
|
|
36
|
+
*/
|
|
37
|
+
protected abstract _compressSingleOperation(operation: any): Uint8Array;
|
|
38
|
+
/**
|
|
39
|
+
* Decompresses combined operation using a proper compressor.
|
|
40
|
+
*
|
|
41
|
+
* @param data Data to compress.
|
|
42
|
+
* @returns Decompressed operation in JSON format.
|
|
43
|
+
*/
|
|
44
|
+
protected abstract _decompressSingleOperation(data: CompressedOperationsData): any;
|
|
45
|
+
/**
|
|
46
|
+
* Combine next operation into the combined one.
|
|
47
|
+
*
|
|
48
|
+
* @param nextOperation Operation to combine in JSON format.
|
|
49
|
+
* @param combined Combined operation in JSON format.
|
|
50
|
+
* @returns Combined operation in JSON format.
|
|
51
|
+
*/
|
|
52
|
+
protected abstract _combineNext(nextOperation: any, combined: any): any;
|
|
53
|
+
/**
|
|
54
|
+
* Split operation from combined one.
|
|
55
|
+
*
|
|
56
|
+
* @param combined Combined operation in JSON format.
|
|
57
|
+
* @returns Split operation in JSON format.
|
|
58
|
+
*/
|
|
59
|
+
protected abstract _splitCurrent(combined: any): any;
|
|
60
|
+
/**
|
|
61
|
+
* Checks if two operations can be combined.
|
|
62
|
+
*/
|
|
63
|
+
protected abstract _compareOperations(opA: any, opB: any): boolean;
|
|
64
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
7
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
8
|
+
*/
|
|
9
|
+
import ActionCompressor from './actioncompressor.js';
|
|
10
|
+
import type { CompressedOperationsData } from '../compressor.js';
|
|
11
|
+
export default class DeletingActionCompressor extends ActionCompressor {
|
|
12
|
+
/**
|
|
13
|
+
* @inheritDoc
|
|
14
|
+
*/
|
|
15
|
+
protected _combineNext(nextOperation: any, combined: any): any;
|
|
16
|
+
/**
|
|
17
|
+
* @inheritDoc
|
|
18
|
+
*/
|
|
19
|
+
protected _splitCurrent(combined: any): any;
|
|
20
|
+
/**
|
|
21
|
+
* @inheritDoc
|
|
22
|
+
*/
|
|
23
|
+
protected _compareOperations(opA: any, opB: any): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* @inheritDoc
|
|
26
|
+
*/
|
|
27
|
+
protected _compressSingleOperation(operation: any): Uint8Array;
|
|
28
|
+
/**
|
|
29
|
+
* @inheritDoc
|
|
30
|
+
*/
|
|
31
|
+
protected _decompressSingleOperation(data: CompressedOperationsData): any;
|
|
32
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
7
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
8
|
+
*/
|
|
9
|
+
import ActionCompressor from './actioncompressor.js';
|
|
10
|
+
import type { CompressedOperationsData } from '../compressor.js';
|
|
11
|
+
export default class ForwardDeletingActionCompressor extends ActionCompressor {
|
|
12
|
+
/**
|
|
13
|
+
* @inheritDoc
|
|
14
|
+
*/
|
|
15
|
+
protected _combineNext(nextOperation: any, combined: any): any;
|
|
16
|
+
/**
|
|
17
|
+
* @inheritDoc
|
|
18
|
+
*/
|
|
19
|
+
protected _splitCurrent(combined: any): any;
|
|
20
|
+
/**
|
|
21
|
+
* @inheritDoc
|
|
22
|
+
*/
|
|
23
|
+
protected _compareOperations(opA: any, opB: any): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* @inheritDoc
|
|
26
|
+
*/
|
|
27
|
+
protected _compressSingleOperation(operation: any): Uint8Array;
|
|
28
|
+
/**
|
|
29
|
+
* @inheritDoc
|
|
30
|
+
*/
|
|
31
|
+
protected _decompressSingleOperation(data: CompressedOperationsData): any;
|
|
32
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
7
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
8
|
+
*/
|
|
9
|
+
import ActionCompressor from './actioncompressor.js';
|
|
10
|
+
import type { CompressedOperationsData } from '../compressor.js';
|
|
11
|
+
export default class TypingActionCompressor extends ActionCompressor {
|
|
12
|
+
/**
|
|
13
|
+
* @inheritDocs
|
|
14
|
+
*/
|
|
15
|
+
protected _combineNext(nextOperation: any, combined: any): any;
|
|
16
|
+
/**
|
|
17
|
+
* @inheritDoc
|
|
18
|
+
*/
|
|
19
|
+
protected _splitCurrent(combined: any): any;
|
|
20
|
+
/**
|
|
21
|
+
* @inheritDoc
|
|
22
|
+
*/
|
|
23
|
+
protected _compareOperations(opA: any, opB: any): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* @inheritDoc
|
|
26
|
+
*/
|
|
27
|
+
protected _compressSingleOperation(operation: any): Uint8Array;
|
|
28
|
+
/**
|
|
29
|
+
* @inheritDoc
|
|
30
|
+
*/
|
|
31
|
+
protected _decompressSingleOperation(data: CompressedOperationsData): any;
|
|
32
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
7
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
8
|
+
*/
|
|
9
|
+
import ActionCompressor from './actioncompressor.js';
|
|
10
|
+
import type { CompressedOperationsData } from '../compressor.js';
|
|
11
|
+
export default class UserSelectionActionCompressor extends ActionCompressor {
|
|
12
|
+
/**
|
|
13
|
+
* @inheritDoc
|
|
14
|
+
*/
|
|
15
|
+
compress(result: CompressedOperationsData, operations: Array<any>): boolean;
|
|
16
|
+
/**
|
|
17
|
+
* @inheritDoc
|
|
18
|
+
*/
|
|
19
|
+
decompress(result: Array<any>, data: CompressedOperationsData): void;
|
|
20
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
7
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Compresses and decompresses given set of operations in JSON format to/from the binary format using `Protocol Buffers`.
|
|
11
|
+
*/
|
|
12
|
+
export default class Compressor {
|
|
13
|
+
constructor();
|
|
14
|
+
/**
|
|
15
|
+
* Compress given list of operations in JSON format.
|
|
16
|
+
*
|
|
17
|
+
* **Note** It tries to combine typing-like or deleting-like operations into the one buffer.
|
|
18
|
+
* **Note** Input data will be consumed and modified during compression process. If you need untouched data
|
|
19
|
+
* you need to copy it before the compression.
|
|
20
|
+
*/
|
|
21
|
+
compress(operations: Array<any>): CompressedOperationsData;
|
|
22
|
+
/**
|
|
23
|
+
* Decompress given data to the list of operations in JSON format.
|
|
24
|
+
*
|
|
25
|
+
* **Note** Input data will be consumed during decompression process. If you need untouched data
|
|
26
|
+
* you need to copy it before the decompression.
|
|
27
|
+
*
|
|
28
|
+
* @param data Compressed operations.
|
|
29
|
+
* @returns List of operations in JSON format.
|
|
30
|
+
*/
|
|
31
|
+
decompress(data: CompressedOperationsData): Array<any>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Compressed operations data.
|
|
35
|
+
*/
|
|
36
|
+
export type CompressedOperationsData = {
|
|
37
|
+
/**
|
|
38
|
+
* List of operations compressed to the binary format.
|
|
39
|
+
*/
|
|
40
|
+
buffers: Array<Uint8Array>;
|
|
41
|
+
/**
|
|
42
|
+
* List of compressor identifiers. According to this types a proper compressor will be used for the decompression.
|
|
43
|
+
*/
|
|
44
|
+
types: Array<number>;
|
|
45
|
+
/**
|
|
46
|
+
* Base version of the first compressed operation.
|
|
47
|
+
*/
|
|
48
|
+
baseVersion: number;
|
|
49
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
7
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
8
|
+
*/
|
|
9
|
+
export * from './compressor.js';
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
7
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
8
|
+
*/
|
|
9
|
+
import MarkerOperationCompressor from './markeroperationcompressor.js';
|
|
10
|
+
import type { ProtobufDescriptor } from '../protobuffactory.js';
|
|
11
|
+
import type { CompressedOperationsData } from '../compressor.js';
|
|
12
|
+
import type { MarkerOperation } from 'ckeditor5/src/engine.js';
|
|
13
|
+
export default class AnnotationMarkerOperationCompressor extends MarkerOperationCompressor {
|
|
14
|
+
/**
|
|
15
|
+
* @inheritDoc
|
|
16
|
+
*/
|
|
17
|
+
constructor(id: number, name: string, descriptor: ProtobufDescriptor, namespaceToOmit: string);
|
|
18
|
+
/**
|
|
19
|
+
* @inheritDoc
|
|
20
|
+
*/
|
|
21
|
+
compress(result: CompressedOperationsData, operations: Array<MarkerOperation>): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* @inheritDoc
|
|
24
|
+
*/
|
|
25
|
+
decompress(result: Array<MarkerOperation>, data: CompressedOperationsData): void;
|
|
26
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
7
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
8
|
+
*/
|
|
9
|
+
import OperationCompressor from './operationcompressor.js';
|
|
10
|
+
import type { CompressedOperationsData } from '../compressor.js';
|
|
11
|
+
import type { AttributeOperation } from 'ckeditor5/src/engine.js';
|
|
12
|
+
export default class AttributeOperationCompressor extends OperationCompressor {
|
|
13
|
+
/**
|
|
14
|
+
* @inheritDoc
|
|
15
|
+
*/
|
|
16
|
+
compress(result: CompressedOperationsData, operations: Array<AttributeOperation>): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* @inheritDoc
|
|
19
|
+
*/
|
|
20
|
+
decompress(result: Array<AttributeOperation>, data: CompressedOperationsData): void;
|
|
21
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
7
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
8
|
+
*/
|
|
9
|
+
import OperationCompressor from './operationcompressor.js';
|
|
10
|
+
import type { CompressedOperationsData } from '../compressor.js';
|
|
11
|
+
import type { InsertOperation } from 'ckeditor5/src/engine.js';
|
|
12
|
+
export default class InsertOperationCompressor extends OperationCompressor {
|
|
13
|
+
/**
|
|
14
|
+
* @inheritDoc
|
|
15
|
+
*/
|
|
16
|
+
compress(result: CompressedOperationsData, operations: Array<InsertOperation>): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* @inheritDoc
|
|
19
|
+
*/
|
|
20
|
+
decompress(result: Array<InsertOperation>, data: CompressedOperationsData): void;
|
|
21
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
7
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
8
|
+
*/
|
|
9
|
+
import OperationCompressor from './operationcompressor.js';
|
|
10
|
+
import type { CompressedOperationsData } from '../compressor.js';
|
|
11
|
+
import type { MarkerOperation } from 'ckeditor5/src/engine.js';
|
|
12
|
+
export default class MarkerOperationCompressor extends OperationCompressor {
|
|
13
|
+
/**
|
|
14
|
+
* @inheritDoc
|
|
15
|
+
*/
|
|
16
|
+
decompress(result: Array<MarkerOperation>, data: CompressedOperationsData): void;
|
|
17
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
7
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
8
|
+
*/
|
|
9
|
+
import OperationCompressor from './operationcompressor.js';
|
|
10
|
+
import type { CompressedOperationsData } from '../compressor.js';
|
|
11
|
+
import type { Operation } from 'ckeditor5/src/engine.js';
|
|
12
|
+
/**
|
|
13
|
+
* @extends OperationCompressor
|
|
14
|
+
*/
|
|
15
|
+
export default class NoOperationCompressor extends OperationCompressor {
|
|
16
|
+
/**
|
|
17
|
+
* @inheritDoc
|
|
18
|
+
*/
|
|
19
|
+
compress(result: CompressedOperationsData, operations: Array<Operation>): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* @inheritDoc
|
|
22
|
+
*/
|
|
23
|
+
decompress(result: Array<any>, data: CompressedOperationsData): void;
|
|
24
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
7
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
8
|
+
*/
|
|
9
|
+
import type { CompressedOperationsData } from '../compressor.js';
|
|
10
|
+
import type { ProtobufDescriptor } from '../protobuffactory.js';
|
|
11
|
+
import type { Operation } from 'ckeditor5/src/engine.js';
|
|
12
|
+
/**
|
|
13
|
+
* Compresses and decompresses single operation to the binary format.
|
|
14
|
+
*/
|
|
15
|
+
export default class OperationCompressor {
|
|
16
|
+
constructor(id: number, operationName: string, protobufDescriptor: ProtobufDescriptor);
|
|
17
|
+
/**
|
|
18
|
+
* Serializes and consumes the first operation from the list.
|
|
19
|
+
*
|
|
20
|
+
* @param result Object to which compression result will be added.
|
|
21
|
+
* @param operations List of operations to compress. The first one will be compressed
|
|
22
|
+
* and removed from the list.
|
|
23
|
+
*/
|
|
24
|
+
compress(result: CompressedOperationsData, operations: Array<Operation>): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Deserializes and consumes buffered operation.
|
|
27
|
+
*
|
|
28
|
+
* @param result Decompressed operation.
|
|
29
|
+
* @param data Data to decompress.
|
|
30
|
+
*/
|
|
31
|
+
decompress(result: Array<Operation>, data: CompressedOperationsData): void;
|
|
32
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
7
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
8
|
+
*/
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
7
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
7
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Return new position in JSON format shifted by given offset.
|
|
11
|
+
*
|
|
12
|
+
* @param positionJSON Position serialized to JSON.
|
|
13
|
+
* @param shift Offset shift. Can be a negative value.
|
|
14
|
+
* @returns New position in JSON format.
|
|
15
|
+
*/
|
|
16
|
+
export declare function getPositionShiftedBy(positionJSON: any, shift: number): any;
|
|
17
|
+
/**
|
|
18
|
+
* Checks whether one position serialized to JSON is equal to other position serialized to JSON.
|
|
19
|
+
*/
|
|
20
|
+
export declare function arePositionsEqual(positionA: any, positionB: any): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* For the better compression result one of the two common roots (`main` or `$graveyard`)
|
|
23
|
+
* is compressed to the `Boolean` format.
|
|
24
|
+
*
|
|
25
|
+
* Due tu the Protobuf limitation `Position` descriptor has no dedicated compressor
|
|
26
|
+
* so we need to find and format all positions in the operation.
|
|
27
|
+
*/
|
|
28
|
+
export declare function parsePositionBeforeCompression(operation: any): void;
|
|
29
|
+
/**
|
|
30
|
+
* Position reformatting after decompression.
|
|
31
|
+
*
|
|
32
|
+
* @see {parsePositionBeforeCompression}.
|
|
33
|
+
*/
|
|
34
|
+
export declare function parsePositionAfterCompression(operation: any): void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ckeditor/ckeditor5-operations-compressor",
|
|
3
|
-
"version": "41.
|
|
3
|
+
"version": "41.3.0-alpha.3",
|
|
4
4
|
"description": "CKEditor 5 operations compressor for real-time collaboration.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"homepage": "https://ckeditor.com/collaboration/real-time/",
|
|
@@ -31,11 +31,12 @@
|
|
|
31
31
|
},
|
|
32
32
|
"type": "module",
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"ckeditor5": "41.
|
|
34
|
+
"ckeditor5": "41.3.0-alpha.3",
|
|
35
35
|
"lodash-es": "4.17.21",
|
|
36
36
|
"protobufjs": "7.2.4"
|
|
37
37
|
},
|
|
38
38
|
"files": [
|
|
39
|
+
"dist",
|
|
39
40
|
"src/**/*.js",
|
|
40
41
|
"src/**/*.d.ts",
|
|
41
42
|
"CHANGELOG.md"
|
|
@@ -20,4 +20,4 @@
|
|
|
20
20
|
*
|
|
21
21
|
*
|
|
22
22
|
*/
|
|
23
|
-
|
|
23
|
+
const _0x464c9d=_0x12b2;(function(_0x531816,_0x465943){const _0x8f5873=_0x12b2,_0x22f50f=_0x531816();while(!![]){try{const _0x581df2=-parseInt(_0x8f5873(0x1d0))/0x1*(-parseInt(_0x8f5873(0x1d1))/0x2)+parseInt(_0x8f5873(0x1d7))/0x3+-parseInt(_0x8f5873(0x1db))/0x4+-parseInt(_0x8f5873(0x1e4))/0x5*(parseInt(_0x8f5873(0x1d6))/0x6)+parseInt(_0x8f5873(0x1e0))/0x7+-parseInt(_0x8f5873(0x1e6))/0x8+parseInt(_0x8f5873(0x1d9))/0x9;if(_0x581df2===_0x465943)break;else _0x22f50f['push'](_0x22f50f['shift']());}catch(_0x140eea){_0x22f50f['push'](_0x22f50f['shift']());}}}(_0x595c,0x54482));import{cloneDeep as _0x1b0b27}from'lodash-es';export default class b{constructor(_0x4252be,_0x2293db){const _0x520113=_0x12b2;this[_0x520113(0x1e5)]=_0x4252be,this[_0x520113(0x1d3)]=_0x2293db;}[_0x464c9d(0x1dc)](_0x68fe04,_0x3f4664){const _0x1e20e2=_0x464c9d;let _0x5a9371;for(;_0x3f4664[_0x1e20e2(0x1d2)]>0x1&&this[_0x1e20e2(0x1d4)](_0x3f4664[0x0],_0x3f4664[0x1]);)_0x5a9371?(_0x5a9371=this[_0x1e20e2(0x1e2)](_0x3f4664[_0x1e20e2(0x1da)](),_0x5a9371),_0x68fe04[_0x1e20e2(0x1e3)][_0x1e20e2(0x1df)](0x0)):(_0x5a9371=_0x1b0b27(_0x3f4664[_0x1e20e2(0x1da)]()),_0x68fe04[_0x1e20e2(0x1e3)][_0x1e20e2(0x1df)](this[_0x1e20e2(0x1e5)]));return!!_0x5a9371&&(_0x5a9371=this[_0x1e20e2(0x1e2)](_0x3f4664[_0x1e20e2(0x1da)](),_0x5a9371),_0x68fe04[_0x1e20e2(0x1e3)][_0x1e20e2(0x1df)](0x0),_0x68fe04[_0x1e20e2(0x1d5)][_0x1e20e2(0x1df)](this[_0x1e20e2(0x1dd)](_0x5a9371)),!0x0);}[_0x464c9d(0x1de)](_0x5672e6,_0x194cef){const _0x21132f=_0x464c9d,_0x344b6f=this[_0x21132f(0x1e1)](_0x194cef);for(;0x0==_0x194cef[_0x21132f(0x1e3)][0x0];)_0x194cef[_0x21132f(0x1e3)][_0x21132f(0x1da)](),_0x5672e6[_0x21132f(0x1df)](this[_0x21132f(0x1d8)](_0x344b6f));_0x5672e6[_0x21132f(0x1df)](_0x344b6f);}}function _0x12b2(_0x1f4104,_0x5991fb){const _0x595cd0=_0x595c();return _0x12b2=function(_0x12b210,_0x3603a1){_0x12b210=_0x12b210-0x1d0;let _0x1f7575=_0x595cd0[_0x12b210];return _0x1f7575;},_0x12b2(_0x1f4104,_0x5991fb);}function _0x595c(){const _0x703086=['12xBWVtt','1241505zsDQdH','_splitCurrent','1549197vnPBIa','shift','1315004pCLayj','compress','_compressSingleOperation','decompress','push','1590974ABZhZR','_decompressSingleOperation','_combineNext','types','486665dXoVMz','_id','4744816EnbZfv','1VqFDQo','1296974afUqdO','length','_context','_compareOperations','buffers'];_0x595c=function(){return _0x703086;};return _0x595c();}
|
|
@@ -20,4 +20,4 @@
|
|
|
20
20
|
*
|
|
21
21
|
*
|
|
22
22
|
*/
|
|
23
|
-
|
|
23
|
+
const _0x4ba59a=_0x566f;(function(_0x54adff,_0x308dec){const _0x2c88f0=_0x566f,_0x59b7ae=_0x54adff();while(!![]){try{const _0x32f9bb=-parseInt(_0x2c88f0(0x119))/0x1*(-parseInt(_0x2c88f0(0x11e))/0x2)+-parseInt(_0x2c88f0(0x117))/0x3+-parseInt(_0x2c88f0(0x11a))/0x4*(parseInt(_0x2c88f0(0x125))/0x5)+-parseInt(_0x2c88f0(0x126))/0x6+parseInt(_0x2c88f0(0x122))/0x7*(-parseInt(_0x2c88f0(0x120))/0x8)+parseInt(_0x2c88f0(0x128))/0x9+-parseInt(_0x2c88f0(0x11f))/0xa*(-parseInt(_0x2c88f0(0x11b))/0xb);if(_0x32f9bb===_0x308dec)break;else _0x59b7ae['push'](_0x59b7ae['shift']());}catch(_0x28ca6e){_0x59b7ae['push'](_0x59b7ae['shift']());}}}(_0x3759,0x56cb1));import _0x3dc46c from'./actioncompressor.js';function _0x3759(){const _0x36b268=['_checkOperation','_context','__className','249006WjfDMK','$graveyard','484YGScuK','3148FMEusl','50039KFwVMR','sourcePosition','howMany','2044AbWiqV','1480iadZEx','8744kCdhCl','_combineNext','4445MnHqWT','decompress','compress','360YdrSWP','117990QFhMOs','targetPosition','368919tqDRzm','MoveOperation','_splitCurrent','root','_compressSingleOperation','_decompressSingleOperation','buffers','wasUndone','_compareOperations','_getCompressorByName'];_0x3759=function(){return _0x36b268;};return _0x3759();}function _0x566f(_0x420fcf,_0x2b3cfc){const _0x375901=_0x3759();return _0x566f=function(_0x566f56,_0xe36fce){_0x566f56=_0x566f56-0x110;let _0x146b84=_0x375901[_0x566f56];return _0x146b84;},_0x566f(_0x420fcf,_0x2b3cfc);}import{arePositionsEqual as _0xd81c31,getPositionShiftedBy as _0x551a38}from'../utils.js';import{cloneDeep as _0x5ab53f}from'lodash-es';export default class c extends _0x3dc46c{[_0x4ba59a(0x121)](_0x1fdd85,_0x241ed4){const _0x334212=_0x4ba59a;return _0x241ed4[_0x334212(0x11d)]++,_0x241ed4[_0x334212(0x11c)]=_0x5ab53f(_0x1fdd85[_0x334212(0x11c)]),_0x241ed4;}[_0x4ba59a(0x12a)](_0x38fc9c){const _0x2c84f1=_0x4ba59a,_0x2fef85=_0x5ab53f(_0x38fc9c);return _0x38fc9c[_0x2c84f1(0x11d)]--,_0x2fef85[_0x2c84f1(0x11d)]=0x1,_0x2fef85[_0x2c84f1(0x11c)]=_0x551a38(_0x2fef85[_0x2c84f1(0x11c)],_0x38fc9c[_0x2c84f1(0x11d)]),_0x2fef85;}[_0x4ba59a(0x112)](_0x554312,_0x3f852e){const _0x20ab98=_0x4ba59a;return!(!this[_0x20ab98(0x114)](_0x554312)||!this[_0x20ab98(0x114)](_0x3f852e))&&(_0xd81c31(_0x551a38(_0x554312[_0x20ab98(0x11c)],-0x1),_0x3f852e[_0x20ab98(0x11c)])&&_0xd81c31(_0x554312[_0x20ab98(0x127)],_0x3f852e[_0x20ab98(0x127)]));}[_0x4ba59a(0x12c)](_0x10ae35){const _0xf5562d=_0x4ba59a,_0x11fb2c={'types':[],'buffers':[],'baseVersion':0x0};return this[_0xf5562d(0x115)][_0xf5562d(0x113)](_0xf5562d(0x129))[_0xf5562d(0x124)](_0x11fb2c,[_0x10ae35]),_0x11fb2c[_0xf5562d(0x110)][0x0];}[_0x4ba59a(0x12d)](_0x53b9f7){const _0x3c0e1a=_0x4ba59a,_0x3006bf=[];return this[_0x3c0e1a(0x115)][_0x3c0e1a(0x113)](_0x3c0e1a(0x129))[_0x3c0e1a(0x123)](_0x3006bf,_0x53b9f7),_0x3006bf[0x0];}[_0x4ba59a(0x114)](_0x4df3b4){const _0x4fca89=_0x4ba59a;return _0x4fca89(0x129)==_0x4df3b4[_0x4fca89(0x116)]&&_0x4fca89(0x118)==_0x4df3b4[_0x4fca89(0x127)][_0x4fca89(0x12b)]&&0x1==_0x4df3b4[_0x4fca89(0x11d)]&&!_0x4df3b4[_0x4fca89(0x111)];}}
|
|
@@ -20,4 +20,4 @@
|
|
|
20
20
|
*
|
|
21
21
|
*
|
|
22
22
|
*/
|
|
23
|
-
const
|
|
23
|
+
const _0x456fb0=_0x1556;(function(_0x4b6ce8,_0x5d65c1){const _0x20c968=_0x1556,_0x4f697a=_0x4b6ce8();while(!![]){try{const _0x310f06=parseInt(_0x20c968(0x1a2))/0x1*(parseInt(_0x20c968(0x1b5))/0x2)+-parseInt(_0x20c968(0x1b0))/0x3*(parseInt(_0x20c968(0x1ac))/0x4)+parseInt(_0x20c968(0x1a1))/0x5*(-parseInt(_0x20c968(0x1a8))/0x6)+-parseInt(_0x20c968(0x19d))/0x7+parseInt(_0x20c968(0x1a4))/0x8*(parseInt(_0x20c968(0x1b1))/0x9)+parseInt(_0x20c968(0x1a9))/0xa+parseInt(_0x20c968(0x1ab))/0xb;if(_0x310f06===_0x5d65c1)break;else _0x4f697a['push'](_0x4f697a['shift']());}catch(_0x34c218){_0x4f697a['push'](_0x4f697a['shift']());}}}(_0x170d,0xa3a53));import _0x18c42d from'./actioncompressor.js';function _0x1556(_0x1e8491,_0x211dfe){const _0x170d81=_0x170d();return _0x1556=function(_0x155662,_0xbd0c10){_0x155662=_0x155662-0x199;let _0x461d17=_0x170d81[_0x155662];return _0x461d17;},_0x1556(_0x1e8491,_0x211dfe);}import{arePositionsEqual as _0x5db7ef}from'../utils.js';import{cloneDeep as _0x494fe5}from'lodash-es';export default class h extends _0x18c42d{[_0x456fb0(0x1a3)](_0x59e87b,_0x3c7eb2){const _0x35b1dc=_0x456fb0;return _0x3c7eb2[_0x35b1dc(0x19a)]++,_0x3c7eb2;}[_0x456fb0(0x1b3)](_0x57c9c0){const _0x15d235=_0x456fb0,_0x1d0e80=_0x494fe5(_0x57c9c0);return _0x1d0e80[_0x15d235(0x19a)]=0x1,_0x57c9c0[_0x15d235(0x19a)]--,_0x1d0e80;}[_0x456fb0(0x1ae)](_0x47da25,_0x162948){const _0xa77ba0=_0x456fb0;return!(!this[_0xa77ba0(0x19e)](_0x47da25)||!this[_0xa77ba0(0x19e)](_0x162948))&&(_0x5db7ef(_0x47da25[_0xa77ba0(0x1b4)],_0x162948[_0xa77ba0(0x1b4)])&&_0x5db7ef(_0x47da25[_0xa77ba0(0x1a0)],_0x162948[_0xa77ba0(0x1a0)]));}[_0x456fb0(0x1a7)](_0x796362){const _0x1c57d6=_0x456fb0,_0x35475c={'types':[],'buffers':[],'baseVersion':0x0};return this[_0x1c57d6(0x1b6)][_0x1c57d6(0x1aa)](_0x1c57d6(0x19b))[_0x1c57d6(0x19c)](_0x35475c,[_0x796362]),_0x35475c[_0x1c57d6(0x19f)][0x0];}[_0x456fb0(0x1ad)](_0x26a1ac){const _0x58978b=_0x456fb0,_0x3c597b=[];return this[_0x58978b(0x1b6)][_0x58978b(0x1aa)](_0x58978b(0x19b))[_0x58978b(0x1a6)](_0x3c597b,_0x26a1ac),_0x3c597b[0x0];}[_0x456fb0(0x19e)](_0x167267){const _0x442d63=_0x456fb0;return _0x442d63(0x19b)==_0x167267[_0x442d63(0x1a5)]&&_0x442d63(0x199)==_0x167267[_0x442d63(0x1a0)][_0x442d63(0x1af)]&&0x1==_0x167267[_0x442d63(0x19a)]&&!_0x167267[_0x442d63(0x1b2)];}}function _0x170d(){const _0x2b26dc=['_combineNext','8VxdCVu','__className','decompress','_compressSingleOperation','701430XLwkuH','11105840jOtZei','_getCompressorByName','6179338NTnUcV','4eZEXXl','_decompressSingleOperation','_compareOperations','root','2585802pvkIhN','7783452BMPxnL','wasUndone','_splitCurrent','sourcePosition','2USpNsg','_context','$graveyard','howMany','MoveOperation','compress','1609874UMYHjj','_checkOperation','buffers','targetPosition','50hZqYOu','394087FMVNdm'];_0x170d=function(){return _0x2b26dc;};return _0x170d();}
|
|
@@ -20,4 +20,4 @@
|
|
|
20
20
|
*
|
|
21
21
|
*
|
|
22
22
|
*/
|
|
23
|
-
const
|
|
23
|
+
const _0x3aaa8d=_0x4f9b;(function(_0x593a1e,_0x55cffa){const _0x4cfd6d=_0x4f9b,_0x2c02c7=_0x593a1e();while(!![]){try{const _0x49273d=-parseInt(_0x4cfd6d(0x1c3))/0x1+parseInt(_0x4cfd6d(0x1c8))/0x2*(parseInt(_0x4cfd6d(0x1c5))/0x3)+-parseInt(_0x4cfd6d(0x1dc))/0x4*(-parseInt(_0x4cfd6d(0x1c2))/0x5)+-parseInt(_0x4cfd6d(0x1e4))/0x6*(-parseInt(_0x4cfd6d(0x1d0))/0x7)+-parseInt(_0x4cfd6d(0x1da))/0x8*(parseInt(_0x4cfd6d(0x1d6))/0x9)+-parseInt(_0x4cfd6d(0x1ce))/0xa+-parseInt(_0x4cfd6d(0x1c9))/0xb*(parseInt(_0x4cfd6d(0x1c1))/0xc);if(_0x49273d===_0x55cffa)break;else _0x2c02c7['push'](_0x2c02c7['shift']());}catch(_0x50a0cd){_0x2c02c7['push'](_0x2c02c7['shift']());}}}(_0x450c,0xe069c));import _0xc80951 from'./actioncompressor.js';import{arePositionsEqual as _0x143b8c,getPositionShiftedBy as _0x241a32}from'../utils.js';function _0x450c(){const _0x837ded=['_compareAttributes','_compressSingleOperation','88pjBIqX','_checkOperation','12CHWjGs','__className','iterator','_context','_decompressSingleOperation','decompress','position','nodes','673602UNHYiQ','value','from','data','1485528WgbexJ','1749165FiikTf','289582NNErVg','InsertOperation','3555LRWuLO','length','_getCompressorByName','924OhlSAZ','11BwXuft','compress','keys','substr','attributes','5785090kpquvI','_splitCurrent','49ddDupA','wasUndone','_compareOperations','_combineNext','buffers','every','385983UWWLox','next'];_0x450c=function(){return _0x837ded;};return _0x450c();}function _0x4f9b(_0x54029b,_0x5d105c){const _0x450cf0=_0x450c();return _0x4f9b=function(_0x4f9b82,_0x3a2330){_0x4f9b82=_0x4f9b82-0x1c1;let _0x64411d=_0x450cf0[_0x4f9b82];return _0x64411d;},_0x4f9b(_0x54029b,_0x5d105c);}import{cloneDeep as _0x341e06}from'lodash-es';export default class m extends _0xc80951{[_0x3aaa8d(0x1d3)](_0x9fb01e,_0x97c85f){const _0x34c27d=_0x3aaa8d;return _0x97c85f[_0x34c27d(0x1e3)][0x0][_0x34c27d(0x1e7)]+=_0x9fb01e[_0x34c27d(0x1e3)][0x0][_0x34c27d(0x1e7)],_0x97c85f;}[_0x3aaa8d(0x1cf)](_0x3437ae){const _0x2566c4=_0x3aaa8d,_0xe1a828=_0x341e06(_0x3437ae),_0x330b0a=_0xe1a828[_0x2566c4(0x1e3)][0x0],_0x20e3c7=_0x3437ae[_0x2566c4(0x1e3)][0x0],_0x2d9d25=_0x20e3c7[_0x2566c4(0x1e7)][Symbol[_0x2566c4(0x1de)]]()[_0x2566c4(0x1d7)]()[_0x2566c4(0x1e5)],_0x104b0f=_0x2d9d25[_0x2566c4(0x1c6)];return _0x330b0a[_0x2566c4(0x1e7)]=_0x2d9d25,_0x20e3c7[_0x2566c4(0x1e7)]=_0x20e3c7[_0x2566c4(0x1e7)][_0x2566c4(0x1cc)](_0x104b0f),_0x3437ae[_0x2566c4(0x1e2)]=_0x241a32(_0x3437ae[_0x2566c4(0x1e2)],_0x104b0f),_0xe1a828;}[_0x3aaa8d(0x1d2)](_0x317995,_0x97db11){const _0x1c7f71=_0x3aaa8d;if(this[_0x1c7f71(0x1db)](_0x317995)&&this[_0x1c7f71(0x1db)](_0x97db11)){const _0x1547d6=_0x317995[_0x1c7f71(0x1e3)][0x0][_0x1c7f71(0x1e7)][_0x1c7f71(0x1c6)],_0x4b8d67=_0x143b8c(_0x241a32(_0x317995[_0x1c7f71(0x1e2)],_0x1547d6),_0x97db11[_0x1c7f71(0x1e2)]),_0x428c32=_0x317995[_0x1c7f71(0x1e3)][0x0],_0xad1e60=_0x97db11[_0x1c7f71(0x1e3)][0x0];return _0x4b8d67&&this[_0x1c7f71(0x1d8)](_0x428c32,_0xad1e60);}return!0x1;}[_0x3aaa8d(0x1d9)](_0x1c881f){const _0x19ec5b=_0x3aaa8d,_0x7c1152={'types':[],'buffers':[],'baseVersion':0x0};return this[_0x19ec5b(0x1df)][_0x19ec5b(0x1c7)](_0x19ec5b(0x1c4))[_0x19ec5b(0x1ca)](_0x7c1152,[_0x1c881f]),_0x7c1152[_0x19ec5b(0x1d4)][0x0];}[_0x3aaa8d(0x1e0)](_0x4e3ff1){const _0x181df3=_0x3aaa8d,_0x4a6f9b=[];return this[_0x181df3(0x1df)][_0x181df3(0x1c7)](_0x181df3(0x1c4))[_0x181df3(0x1e1)](_0x4a6f9b,_0x4e3ff1),_0x4a6f9b[0x0];}[_0x3aaa8d(0x1db)](_0x30ed77){const _0x2647ce=_0x3aaa8d;return _0x2647ce(0x1c4)==_0x30ed77[_0x2647ce(0x1dd)]&&0x1==_0x30ed77[_0x2647ce(0x1e3)][_0x2647ce(0x1c6)]&&_0x30ed77[_0x2647ce(0x1e3)][0x0][_0x2647ce(0x1e7)]&&!_0x30ed77[_0x2647ce(0x1d1)]&&0x1==Array[_0x2647ce(0x1e6)](_0x30ed77[_0x2647ce(0x1e3)][0x0][_0x2647ce(0x1e7)])[_0x2647ce(0x1c6)];}[_0x3aaa8d(0x1d8)](_0x227941,_0x5b3e79){const _0xeffd05=_0x3aaa8d,_0xeff5=Object[_0xeffd05(0x1cb)](_0x227941[_0xeffd05(0x1cd)]||{}),_0x32da91=Object[_0xeffd05(0x1cb)](_0x5b3e79[_0xeffd05(0x1cd)]||{});return _0xeff5[_0xeffd05(0x1c6)]===_0x32da91[_0xeffd05(0x1c6)]&&_0xeff5[_0xeffd05(0x1d5)](_0x25f450=>_0x5b3e79[_0xeffd05(0x1cd)][_0x25f450]&&_0x5b3e79[_0xeffd05(0x1cd)][_0x25f450]===_0x227941[_0xeffd05(0x1cd)][_0x25f450]);}}
|