@stratasync/y-doc 0.2.0

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/types.js ADDED
@@ -0,0 +1,79 @@
1
+ export const toDocumentKeyString = (key) => `${key.entityType}:${key.entityId}:${key.fieldName}`;
2
+ export const fromDocumentKeyString = (str) => {
3
+ const [entityType, entityId, fieldName] = str.split(":");
4
+ if (!(entityType && entityId && fieldName)) {
5
+ return null;
6
+ }
7
+ return { entityId, entityType, fieldName };
8
+ };
9
+ export const DEFAULT_LIVE_EDITING_RETRY_CONFIG = {
10
+ baseDelayMs: 500,
11
+ jitter: 0.2,
12
+ maxDelayMs: 5000,
13
+ maxRetries: 3,
14
+ };
15
+ const LIVE_EDITING_ERROR_CODES = new Set([
16
+ "NOT_FOUND",
17
+ "UNAUTHORIZED",
18
+ "SUBSCRIBE_REQUIRED",
19
+ "INVALID_PAYLOAD",
20
+ "RATE_LIMITED",
21
+ ]);
22
+ const RETRYABLE_LIVE_EDITING_ERROR_CODES = new Set([
23
+ "UNAUTHORIZED",
24
+ "NOT_FOUND",
25
+ "SUBSCRIBE_REQUIRED",
26
+ ]);
27
+ const isLiveEditingErrorCode = (value) => typeof value === "string" &&
28
+ LIVE_EDITING_ERROR_CODES.has(value);
29
+ export const isRetryableLiveEditingErrorCode = (code) => RETRYABLE_LIVE_EDITING_ERROR_CODES.has(code);
30
+ const hasMessageType = (msg, type) => typeof msg === "object" &&
31
+ msg !== null &&
32
+ msg.type === type;
33
+ export const isYjsSyncStep2Message = (msg) => {
34
+ if (!hasMessageType(msg, "yjs_sync_step2")) {
35
+ return false;
36
+ }
37
+ const message = msg;
38
+ return (typeof message.entityType === "string" &&
39
+ typeof message.entityId === "string" &&
40
+ typeof message.fieldName === "string" &&
41
+ typeof message.payload === "string" &&
42
+ typeof message.seq === "number");
43
+ };
44
+ export const isYjsUpdateMessage = (msg) => {
45
+ if (!hasMessageType(msg, "yjs_update")) {
46
+ return false;
47
+ }
48
+ const message = msg;
49
+ return (typeof message.entityType === "string" &&
50
+ typeof message.entityId === "string" &&
51
+ typeof message.fieldName === "string" &&
52
+ typeof message.payload === "string" &&
53
+ typeof message.clientId === "string" &&
54
+ typeof message.connId === "string" &&
55
+ typeof message.seq === "number");
56
+ };
57
+ export const isSessionStateMessage = (msg) => {
58
+ if (!hasMessageType(msg, "session_state")) {
59
+ return false;
60
+ }
61
+ const message = msg;
62
+ return (typeof message.entityType === "string" &&
63
+ typeof message.entityId === "string" &&
64
+ typeof message.fieldName === "string" &&
65
+ typeof message.active === "boolean" &&
66
+ Array.isArray(message.participants));
67
+ };
68
+ export const isLiveEditingErrorMessage = (msg) => {
69
+ if (!hasMessageType(msg, "live_editing_error")) {
70
+ return false;
71
+ }
72
+ const message = msg;
73
+ return (typeof message.entityType === "string" &&
74
+ typeof message.entityId === "string" &&
75
+ typeof message.fieldName === "string" &&
76
+ typeof message.error === "string" &&
77
+ isLiveEditingErrorCode(message.code));
78
+ };
79
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "@stratasync/y-doc",
3
+ "version": "0.2.0",
4
+ "files": [
5
+ "dist"
6
+ ],
7
+ "type": "module",
8
+ "main": "./dist/index.js",
9
+ "types": "./dist/index.d.ts",
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "import": "./dist/index.js"
14
+ }
15
+ },
16
+ "publishConfig": {
17
+ "access": "public"
18
+ },
19
+ "scripts": {
20
+ "build": "tsc -p tsconfig.build.json",
21
+ "dev": "tsc --watch -p tsconfig.build.json",
22
+ "lint": "oxlint .",
23
+ "lint:fix": "oxlint --fix .",
24
+ "format": "oxfmt --write .",
25
+ "format:check": "oxfmt --check .",
26
+ "check-types": "tsc --noEmit",
27
+ "test": "vitest run"
28
+ },
29
+ "dependencies": {
30
+ "yjs": "^13.6.0"
31
+ },
32
+ "devDependencies": {
33
+ "lefthook": "^2.1.4",
34
+ "oxfmt": "^0.41.0",
35
+ "oxlint": "^1.56.0",
36
+ "typescript": "^5.9.3",
37
+ "ultracite": "^7.3.2",
38
+ "vitest": "^4.1.0"
39
+ },
40
+ "peerDependencies": {
41
+ "yjs": "^13.6.0"
42
+ }
43
+ }