* Chore: Add move most types from rrweb to @rrweb/types package * Split off type imports * Split off type import to its own line * Get vite to generate type definitions * Apply formatting changes * noEmit not allowed in tsconfig, moved it to build step * Align version of @rrweb/types with main rrweb package Based on @mark-fenng's comments https://github.com/rrweb-io/rrweb/pull/1031/files#r1002298176 * Move up keywords
49 lines
1.2 KiB
TypeScript
49 lines
1.2 KiB
TypeScript
import { pack, unpack } from '../src/packer';
|
|
import { eventWithTime, EventType } from '@rrweb/types';
|
|
import { MARK } from '../src/packer/base';
|
|
|
|
const event: eventWithTime = {
|
|
type: EventType.DomContentLoaded,
|
|
data: {},
|
|
timestamp: new Date('2020-01-01').getTime(),
|
|
};
|
|
|
|
describe('pack', () => {
|
|
it('can pack event', () => {
|
|
const packedData = pack(event);
|
|
expect(packedData).toMatchSnapshot();
|
|
});
|
|
});
|
|
|
|
describe('unpack', () => {
|
|
it('is compatible with unpacked data 1', () => {
|
|
const result = unpack((event as unknown) as string);
|
|
expect(result).toEqual(event);
|
|
});
|
|
|
|
it('is compatible with unpacked data 2', () => {
|
|
const result = unpack(JSON.stringify(event));
|
|
expect(result).toEqual(event);
|
|
});
|
|
|
|
it('stop on unknown data format', () => {
|
|
const consoleSpy = jest
|
|
.spyOn(console, 'error')
|
|
.mockImplementation(() => {});
|
|
|
|
expect(() => unpack('[""]')).toThrow('');
|
|
|
|
expect(consoleSpy).toHaveBeenCalled();
|
|
jest.resetAllMocks();
|
|
});
|
|
|
|
it('can unpack packed data', () => {
|
|
const packedData = pack(event);
|
|
const result = unpack(packedData);
|
|
expect(result).toEqual({
|
|
...event,
|
|
v: MARK,
|
|
});
|
|
});
|
|
});
|