loro-repo 0.4.0 → 0.5.1
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/README.md +9 -9
- package/dist/chunk.cjs +30 -0
- package/dist/index.cjs +250 -1424
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -629
- package/dist/index.d.ts +5 -630
- package/dist/index.js +248 -1389
- package/dist/index.js.map +1 -1
- package/dist/storage/filesystem.cjs +164 -0
- package/dist/storage/filesystem.cjs.map +1 -0
- package/dist/storage/filesystem.d.cts +49 -0
- package/dist/storage/filesystem.d.ts +49 -0
- package/dist/storage/filesystem.js +158 -0
- package/dist/storage/filesystem.js.map +1 -0
- package/dist/storage/indexeddb.cjs +261 -0
- package/dist/storage/indexeddb.cjs.map +1 -0
- package/dist/storage/indexeddb.d.cts +54 -0
- package/dist/storage/indexeddb.d.ts +54 -0
- package/dist/storage/indexeddb.js +258 -0
- package/dist/storage/indexeddb.js.map +1 -0
- package/dist/transport/broadcast-channel.cjs +252 -0
- package/dist/transport/broadcast-channel.cjs.map +1 -0
- package/dist/transport/broadcast-channel.d.cts +45 -0
- package/dist/transport/broadcast-channel.d.ts +45 -0
- package/dist/transport/broadcast-channel.js +251 -0
- package/dist/transport/broadcast-channel.js.map +1 -0
- package/dist/transport/websocket.cjs +435 -0
- package/dist/transport/websocket.cjs.map +1 -0
- package/dist/transport/websocket.d.cts +69 -0
- package/dist/transport/websocket.d.ts +69 -0
- package/dist/transport/websocket.js +430 -0
- package/dist/transport/websocket.js.map +1 -0
- package/dist/types.d.cts +419 -0
- package/dist/types.d.ts +419 -0
- package/package.json +28 -4
package/README.md
CHANGED
|
@@ -17,11 +17,9 @@ LoroRepo is the collection-sync layer that sits above Flock. It keeps document m
|
|
|
17
17
|
## Quick start
|
|
18
18
|
|
|
19
19
|
```ts
|
|
20
|
-
import {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
IndexedDBStorageAdaptor,
|
|
24
|
-
} from "loro-repo";
|
|
20
|
+
import { LoroRepo } from "loro-repo";
|
|
21
|
+
import { BroadcastChannelTransportAdapter } from "loro-repo/transport/broadcast-channel";
|
|
22
|
+
import { IndexedDBStorageAdaptor } from "loro-repo/storage/indexeddb";
|
|
25
23
|
|
|
26
24
|
type DocMeta = { title?: string; tags?: string[] };
|
|
27
25
|
|
|
@@ -56,14 +54,16 @@ await repo.unloadDoc("note:welcome");
|
|
|
56
54
|
|
|
57
55
|
## Built-in adapters
|
|
58
56
|
|
|
57
|
+
Adapters are shipped as subpath exports so the default `loro-repo` entry stays host-agnostic. Import them directly from their paths, e.g. `loro-repo/transport/websocket` or `loro-repo/storage/indexeddb`.
|
|
58
|
+
|
|
59
59
|
- `BroadcastChannelTransportAdapter` (`src/transport/broadcast-channel.ts`)
|
|
60
|
-
Same-origin peer-to-peer transport that lets browser tabs exchange metadata/doc deltas through the BroadcastChannel API. Perfect for demos, offline PWAs, or local-first UIs; used in the quick-start snippet and the P2P Journal example.
|
|
60
|
+
Same-origin peer-to-peer transport that lets browser tabs exchange metadata/doc deltas through the BroadcastChannel API. Perfect for demos, offline PWAs, or local-first UIs; used in the quick-start snippet and the P2P Journal example. Import via `loro-repo/transport/broadcast-channel`.
|
|
61
61
|
|
|
62
62
|
- `WebSocketTransportAdapter` (`src/transport/websocket.ts`)
|
|
63
63
|
loro-websocket powered transport for centralized servers or Durable Objects. Provide `url`, `metadataRoomId`, and optional auth callbacks and it handles join/sync lifecycles for you:
|
|
64
64
|
|
|
65
65
|
```ts
|
|
66
|
-
import { WebSocketTransportAdapter } from "loro-repo";
|
|
66
|
+
import { WebSocketTransportAdapter } from "loro-repo/transport/websocket";
|
|
67
67
|
|
|
68
68
|
const transport = new WebSocketTransportAdapter({
|
|
69
69
|
url: "wss://sync.example.com/repo",
|
|
@@ -73,10 +73,10 @@ await repo.unloadDoc("note:welcome");
|
|
|
73
73
|
```
|
|
74
74
|
|
|
75
75
|
- `IndexedDBStorageAdaptor` (`src/storage/indexeddb.ts`)
|
|
76
|
-
Browser storage for metadata snapshots, doc snapshots/updates, and cached assets. Swap it out for SQLite/LevelDB/file-system adaptors when running on desktop or server environments.
|
|
76
|
+
Browser storage for metadata snapshots, doc snapshots/updates, and cached assets. Swap it out for SQLite/LevelDB/file-system adaptors when running on desktop or server environments. Import via `loro-repo/storage/indexeddb`.
|
|
77
77
|
|
|
78
78
|
- `FileSystemStorageAdaptor` (`src/storage/filesystem.ts`)
|
|
79
|
-
Node-friendly persistence layer that writes metadata snapshots, doc snapshots/updates, and assets to the local file system. Point it at a writable directory (defaults to `.loro-repo` in your current working folder) when building Electron apps, desktop sync daemons, or tests that need durable state without IndexedDB.
|
|
79
|
+
Node-friendly persistence layer that writes metadata snapshots, doc snapshots/updates, and assets to the local file system. Point it at a writable directory (defaults to `.loro-repo` in your current working folder) when building Electron apps, desktop sync daemons, or tests that need durable state without IndexedDB. Import via `loro-repo/storage/filesystem`.
|
|
80
80
|
|
|
81
81
|
- Asset transports
|
|
82
82
|
Bring your own `AssetTransportAdapter` (HTTP uploads, peer meshes, S3, etc.). LoroRepo dedupes via SHA-256 assetIds while your adaptor decides how to encrypt/store the bytes.
|
package/dist/chunk.cjs
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
//#region rolldown:runtime
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __copyProps = (to, from, except, desc) => {
|
|
9
|
+
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
10
|
+
key = keys[i];
|
|
11
|
+
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
12
|
+
get: ((k) => from[k]).bind(null, key),
|
|
13
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
19
|
+
value: mod,
|
|
20
|
+
enumerable: true
|
|
21
|
+
}) : target, mod));
|
|
22
|
+
|
|
23
|
+
//#endregion
|
|
24
|
+
|
|
25
|
+
Object.defineProperty(exports, '__toESM', {
|
|
26
|
+
enumerable: true,
|
|
27
|
+
get: function () {
|
|
28
|
+
return __toESM;
|
|
29
|
+
}
|
|
30
|
+
});
|