Extract reconcile (#85)

This commit is contained in:
Andras Schmelczer 2025-07-13 11:06:42 +01:00 committed by GitHub
parent 75b020146a
commit bb0e44f06f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
141 changed files with 294 additions and 36720 deletions

View file

@ -1,4 +1,4 @@
import assert from "assert";
import * as assert from "assert";
export function assertSetContainsExactly<T>(set: Set<T>, ...values: T[]): void {
assert(

View file

@ -1,18 +0,0 @@
import init, { base64ToBytes } from "sync_lib";
import fs from "fs";
describe("deserialize", () => {
it("should serialize a Uint8Array to a base64 string", async () => {
const wasmBin = fs.readFileSync(
"../../backend/sync_lib/pkg/sync_lib_bg.wasm"
);
await init({ module_or_path: wasmBin });
const base64 = "SGVsbG8=";
const jsResult = base64ToBytes(base64);
const expected = new Uint8Array([72, 101, 108, 108, 111]);
expect(jsResult).toEqual(expected);
const rustResult = base64ToBytes(base64);
expect(jsResult).toEqual(rustResult);
});
});

View file

@ -0,0 +1,28 @@
import { isFileTypeMergable } from "./is-file-type-mergable";
describe("isFileTypeMergable", () => {
it("should return true for .md files", () => {
expect(isFileTypeMergable(".md")).toBe(true);
expect(isFileTypeMergable("hi.md")).toBe(true);
expect(isFileTypeMergable("my/path/to/my/document.md")).toBe(true);
});
it("should return true for .txt files", () => {
expect(isFileTypeMergable(".txt")).toBe(true);
expect(isFileTypeMergable("hi.txt")).toBe(true);
expect(isFileTypeMergable("my/path/to/my/document.txt")).toBe(true);
});
it("should be case insensitive", () => {
expect(isFileTypeMergable("hi.MD")).toBe(true);
expect(isFileTypeMergable("my/path/to/my/DOCUMENT.MD")).toBe(true);
expect(isFileTypeMergable("hi.TXT")).toBe(true);
expect(isFileTypeMergable("my/path/to/my/DOCUMENT.TXT")).toBe(true);
});
it("should return false for non-mergable file types", () => {
expect(isFileTypeMergable(".json")).toBe(false);
expect(isFileTypeMergable("HELLO.JSON")).toBe(false);
expect(isFileTypeMergable("my/config.yml")).toBe(false);
});
});

View file

@ -0,0 +1,6 @@
export function isFileTypeMergable(pathOrFileName: string): boolean {
const parts = pathOrFileName.split(".");
const fileExtension = parts.at(-1) ?? "";
return ["md", "txt"].includes(fileExtension.toLowerCase());
}

View file

@ -1,18 +0,0 @@
import { serialize } from "./serialize";
import init, { bytesToBase64 } from "sync_lib";
import fs from "fs";
describe("serialize", () => {
it("should serialize a Uint8Array to a base64 string", async () => {
const wasmBin = fs.readFileSync(
"../../backend/sync_lib/pkg/sync_lib_bg.wasm"
);
await init({ module_or_path: wasmBin });
const data = new Uint8Array([72, 101, 108, 108, 111]);
const jsResult = serialize(data);
const rustResult = bytesToBase64(data);
expect(rustResult).toBe("SGVsbG8=");
expect(jsResult).toBe(rustResult);
});
});

View file

@ -1,5 +0,0 @@
import { bytesToBase64 } from "byte-base64";
export function serialize(data: Uint8Array): string {
return bytesToBase64(data);
}