@slopus/happy-agent-client 0.0.58 → 0.0.60
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 +6 -41
- package/dist/HappyAgentClient.d.ts +4 -44
- package/dist/HappyAgentClient.d.ts.map +1 -1
- package/dist/HappyAgentClient.js +13 -184
- package/dist/HappyAgentClient.js.map +1 -1
- package/dist/index.d.ts +1 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/protocol/bootstrap.d.ts +0 -115
- package/dist/protocol/bootstrap.d.ts.map +1 -1
- package/dist/protocol/bootstrap.js +1 -3
- package/dist/protocol/bootstrap.js.map +1 -1
- package/dist/protocol/cloud.d.ts +0 -731
- package/dist/protocol/cloud.d.ts.map +1 -1
- package/dist/protocol/cloud.js +4 -192
- package/dist/protocol/cloud.js.map +1 -1
- package/dist/protocol/events.d.ts +1 -55
- package/dist/protocol/events.d.ts.map +1 -1
- package/dist/protocol/events.js +0 -24
- package/dist/protocol/events.js.map +1 -1
- package/dist/protocol/messages.d.ts +8 -5
- package/dist/protocol/messages.d.ts.map +1 -1
- package/dist/protocol/messages.js +12 -0
- package/dist/protocol/messages.js.map +1 -1
- package/dist/protocol/users.d.ts +31 -0
- package/dist/protocol/users.d.ts.map +1 -0
- package/dist/protocol/users.js +24 -0
- package/dist/protocol/users.js.map +1 -0
- package/package.json +1 -1
- package/dist/cloudEncryption.d.ts +0 -25
- package/dist/cloudEncryption.d.ts.map +0 -1
- package/dist/cloudEncryption.js +0 -173
- package/dist/cloudEncryption.js.map +0 -1
- package/dist/protocol/crdt.d.ts +0 -310
- package/dist/protocol/crdt.d.ts.map +0 -1
- package/dist/protocol/crdt.js +0 -255
- package/dist/protocol/crdt.js.map +0 -1
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type Static } from "@sinclair/typebox";
|
|
2
|
+
/** An installation-local Happy user identity, never a WorkOS identity. */
|
|
3
|
+
export declare const userIdSchema: import("@sinclair/typebox").TString;
|
|
4
|
+
/** The bounded batch accepted by the team-user lookup, in caller order. */
|
|
5
|
+
export declare const userIdsSchema: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
|
|
6
|
+
export type UserIds = Static<typeof userIdsSchema>;
|
|
7
|
+
/** Public display information for one installation-local team member. */
|
|
8
|
+
export declare const userSchema: import("@sinclair/typebox").TObject<{
|
|
9
|
+
id: import("@sinclair/typebox").TString;
|
|
10
|
+
name: import("@sinclair/typebox").TString;
|
|
11
|
+
photo: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
12
|
+
thumbhash: import("@sinclair/typebox").TString;
|
|
13
|
+
}>, import("@sinclair/typebox").TNull]>;
|
|
14
|
+
updatedAt: import("@sinclair/typebox").TInteger;
|
|
15
|
+
version: import("@sinclair/typebox").TString;
|
|
16
|
+
}>;
|
|
17
|
+
export type User = Static<typeof userSchema>;
|
|
18
|
+
/** `GET /v0/users` — known users in first-requested order, without duplicates. */
|
|
19
|
+
export declare const usersResponseSchema: import("@sinclair/typebox").TObject<{
|
|
20
|
+
users: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
|
|
21
|
+
id: import("@sinclair/typebox").TString;
|
|
22
|
+
name: import("@sinclair/typebox").TString;
|
|
23
|
+
photo: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
24
|
+
thumbhash: import("@sinclair/typebox").TString;
|
|
25
|
+
}>, import("@sinclair/typebox").TNull]>;
|
|
26
|
+
updatedAt: import("@sinclair/typebox").TInteger;
|
|
27
|
+
version: import("@sinclair/typebox").TString;
|
|
28
|
+
}>>;
|
|
29
|
+
}>;
|
|
30
|
+
export type UsersResponse = Static<typeof usersResponseSchema>;
|
|
31
|
+
//# sourceMappingURL=users.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../sources/protocol/users.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAKtD,0EAA0E;AAC1E,eAAO,MAAM,YAAY,qCAIvB,CAAC;AAEH,2EAA2E;AAC3E,eAAO,MAAM,aAAa,yEAA8C,CAAC;AACzE,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,aAAa,CAAC,CAAC;AAEnD,yEAAyE;AACzE,eAAO,MAAM,UAAU;;;;;;;;EAMrB,CAAC;AACH,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,UAAU,CAAC,CAAC;AAE7C,kFAAkF;AAClF,eAAO,MAAM,mBAAmB;;;;;;;;;;EAE9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Type } from "@sinclair/typebox";
|
|
2
|
+
import { Nullable, resourceVersionSchema, timestampSchema } from "./common.js";
|
|
3
|
+
import { profilePhotoSchema } from "./profile.js";
|
|
4
|
+
/** An installation-local Happy user identity, never a WorkOS identity. */
|
|
5
|
+
export const userIdSchema = Type.String({
|
|
6
|
+
minLength: 2,
|
|
7
|
+
maxLength: 32,
|
|
8
|
+
pattern: "^[a-z][a-z0-9]*$",
|
|
9
|
+
});
|
|
10
|
+
/** The bounded batch accepted by the team-user lookup, in caller order. */
|
|
11
|
+
export const userIdsSchema = Type.Array(userIdSchema, { maxItems: 100 });
|
|
12
|
+
/** Public display information for one installation-local team member. */
|
|
13
|
+
export const userSchema = Type.Object({
|
|
14
|
+
id: userIdSchema,
|
|
15
|
+
name: Type.String({ minLength: 1 }),
|
|
16
|
+
photo: Nullable(profilePhotoSchema),
|
|
17
|
+
updatedAt: timestampSchema,
|
|
18
|
+
version: resourceVersionSchema,
|
|
19
|
+
});
|
|
20
|
+
/** `GET /v0/users` — known users in first-requested order, without duplicates. */
|
|
21
|
+
export const usersResponseSchema = Type.Object({
|
|
22
|
+
users: Type.Array(userSchema, { maxItems: 100 }),
|
|
23
|
+
});
|
|
24
|
+
//# sourceMappingURL=users.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users.js","sourceRoot":"","sources":["../../sources/protocol/users.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAe,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,0EAA0E;AAC1E,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC;IACpC,SAAS,EAAE,CAAC;IACZ,SAAS,EAAE,EAAE;IACb,OAAO,EAAE,kBAAkB;CAC9B,CAAC,CAAC;AAEH,2EAA2E;AAC3E,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;AAGzE,yEAAyE;AACzE,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;IAClC,EAAE,EAAE,YAAY;IAChB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;IACnC,KAAK,EAAE,QAAQ,CAAC,kBAAkB,CAAC;IACnC,SAAS,EAAE,eAAe;IAC1B,OAAO,EAAE,qBAAqB;CACjC,CAAC,CAAC;AAGH,kFAAkF;AAClF,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3C,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;CACnD,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { type Static } from "@sinclair/typebox";
|
|
2
|
-
import { type CloudGeneratedSecret } from "./protocol/cloud.js";
|
|
3
|
-
/** The number of cryptographically secure random bytes encoded by an H1 generated secret. */
|
|
4
|
-
export declare const CLOUD_GENERATED_SECRET_SEED_BYTES = 16;
|
|
5
|
-
/** The two derived values accepted by the Cloud key create and restore mutations. */
|
|
6
|
-
export declare const cloudDerivedKeysSchema: import("@sinclair/typebox").TObject<{
|
|
7
|
-
authHash: import("@sinclair/typebox").TString;
|
|
8
|
-
encryptionKey: import("@sinclair/typebox").TString;
|
|
9
|
-
}>;
|
|
10
|
-
export type CloudDerivedKeys = Static<typeof cloudDerivedKeysSchema>;
|
|
11
|
-
/**
|
|
12
|
-
* Removes surrounding Unicode whitespace and applies the NFKD normalization
|
|
13
|
-
* used by 1Password before password key derivation.
|
|
14
|
-
*/
|
|
15
|
-
export declare function normalizeCloudPassword(password: string): string;
|
|
16
|
-
/** Encodes a caller-provided 128-bit secure random seed as a canonical H1 generated secret. */
|
|
17
|
-
export declare function stringifyCloudGeneratedSecret(seed: Uint8Array): CloudGeneratedSecret;
|
|
18
|
-
/** Decodes one canonical H1 generated secret into a new 128-bit seed buffer. */
|
|
19
|
-
export declare function parseCloudGeneratedSecret(secret: string): Uint8Array<ArrayBuffer>;
|
|
20
|
-
/**
|
|
21
|
-
* Combines the generated and password factors into independent Cloud bundle
|
|
22
|
-
* encryption and authentication values.
|
|
23
|
-
*/
|
|
24
|
-
export declare function deriveCloudKeys(generatedSecret: CloudGeneratedSecret, password: string): Promise<CloudDerivedKeys>;
|
|
25
|
-
//# sourceMappingURL=cloudEncryption.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cloudEncryption.d.ts","sourceRoot":"","sources":["../sources/cloudEncryption.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGtD,OAAO,EACH,KAAK,oBAAoB,EAG5B,MAAM,qBAAqB,CAAC;AAe7B,6FAA6F;AAC7F,eAAO,MAAM,iCAAiC,KAAK,CAAC;AAEpD,qFAAqF;AACrF,eAAO,MAAM,sBAAsB;;;EAMlC,CAAC;AACF,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAOrE;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAS/D;AAED,+FAA+F;AAC/F,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,UAAU,GAAG,oBAAoB,CAoBpF;AAED,gFAAgF;AAChF,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,CAejF;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACjC,eAAe,EAAE,oBAAoB,EACrC,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,CAAC,CAmB3B"}
|
package/dist/cloudEncryption.js
DELETED
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
import { Type } from "@sinclair/typebox";
|
|
2
|
-
import { Value } from "@sinclair/typebox/value";
|
|
3
|
-
import { cloudGeneratedSecretSchema, cloudKeyValueSchema, } from "./protocol/cloud.js";
|
|
4
|
-
const exact = { additionalProperties: false };
|
|
5
|
-
const encoder = new TextEncoder();
|
|
6
|
-
const GENERATED_SECRET_ALPHABET = "23456789ABCDEFGHJKLMNPQRSTVWXYZ";
|
|
7
|
-
const GENERATED_SECRET_BASE = BigInt(GENERATED_SECRET_ALPHABET.length);
|
|
8
|
-
const GENERATED_SECRET_BODY_CHARACTERS = 26;
|
|
9
|
-
const GENERATED_SECRET_PREFIX = "H1";
|
|
10
|
-
const GENERATED_SECRET_VALUE_LIMIT = 1n << 128n;
|
|
11
|
-
const KEY_BYTES = 32;
|
|
12
|
-
const PBKDF2_ITERATIONS = 650_000;
|
|
13
|
-
const KDF_SALT = encoder.encode("happy-agent-cloud-keys/H1");
|
|
14
|
-
const passwordInputSchema = Type.String();
|
|
15
|
-
const normalizedPasswordSchema = Type.String({ minLength: 1 });
|
|
16
|
-
/** The number of cryptographically secure random bytes encoded by an H1 generated secret. */
|
|
17
|
-
export const CLOUD_GENERATED_SECRET_SEED_BYTES = 16;
|
|
18
|
-
/** The two derived values accepted by the Cloud key create and restore mutations. */
|
|
19
|
-
export const cloudDerivedKeysSchema = Type.Object({
|
|
20
|
-
authHash: cloudKeyValueSchema,
|
|
21
|
-
encryptionKey: cloudKeyValueSchema,
|
|
22
|
-
}, exact);
|
|
23
|
-
const cloudGeneratedSecretSeedSchema = Type.Uint8Array({
|
|
24
|
-
maxByteLength: CLOUD_GENERATED_SECRET_SEED_BYTES,
|
|
25
|
-
minByteLength: CLOUD_GENERATED_SECRET_SEED_BYTES,
|
|
26
|
-
});
|
|
27
|
-
/**
|
|
28
|
-
* Removes surrounding Unicode whitespace and applies the NFKD normalization
|
|
29
|
-
* used by 1Password before password key derivation.
|
|
30
|
-
*/
|
|
31
|
-
export function normalizeCloudPassword(password) {
|
|
32
|
-
if (!Value.Check(passwordInputSchema, password)) {
|
|
33
|
-
throw new TypeError("Password must be a string.");
|
|
34
|
-
}
|
|
35
|
-
const normalized = password.trim().normalize("NFKD");
|
|
36
|
-
if (!Value.Check(normalizedPasswordSchema, normalized)) {
|
|
37
|
-
throw new TypeError("Password must not be empty after trimming.");
|
|
38
|
-
}
|
|
39
|
-
return normalized;
|
|
40
|
-
}
|
|
41
|
-
/** Encodes a caller-provided 128-bit secure random seed as a canonical H1 generated secret. */
|
|
42
|
-
export function stringifyCloudGeneratedSecret(seed) {
|
|
43
|
-
if (!Value.Check(cloudGeneratedSecretSeedSchema, seed)) {
|
|
44
|
-
throw new TypeError(`Generated secret seed must contain exactly ${CLOUD_GENERATED_SECRET_SEED_BYTES} bytes.`);
|
|
45
|
-
}
|
|
46
|
-
let value = bytesToInteger(seed);
|
|
47
|
-
let body = "";
|
|
48
|
-
for (let index = 0; index < GENERATED_SECRET_BODY_CHARACTERS; index += 1) {
|
|
49
|
-
body = GENERATED_SECRET_ALPHABET[Number(value % GENERATED_SECRET_BASE)] + body;
|
|
50
|
-
value /= GENERATED_SECRET_BASE;
|
|
51
|
-
}
|
|
52
|
-
if (value !== 0n)
|
|
53
|
-
throw new TypeError("Generated secret seed is out of range.");
|
|
54
|
-
const formatted = `${GENERATED_SECRET_PREFIX}-${body.slice(0, 5)}-${body.slice(5, 10)}-${body.slice(10, 15)}-${body.slice(15, 20)}-${body.slice(20)}`;
|
|
55
|
-
if (!Value.Check(cloudGeneratedSecretSchema, formatted)) {
|
|
56
|
-
throw new TypeError("Generated secret could not be encoded.");
|
|
57
|
-
}
|
|
58
|
-
return formatted;
|
|
59
|
-
}
|
|
60
|
-
/** Decodes one canonical H1 generated secret into a new 128-bit seed buffer. */
|
|
61
|
-
export function parseCloudGeneratedSecret(secret) {
|
|
62
|
-
if (!Value.Check(cloudGeneratedSecretSchema, secret)) {
|
|
63
|
-
throw new TypeError("Generated secret is not a canonical H1 secret.");
|
|
64
|
-
}
|
|
65
|
-
const body = secret.slice(GENERATED_SECRET_PREFIX.length + 1).replaceAll("-", "");
|
|
66
|
-
let value = 0n;
|
|
67
|
-
for (const character of body) {
|
|
68
|
-
value =
|
|
69
|
-
value * GENERATED_SECRET_BASE + BigInt(GENERATED_SECRET_ALPHABET.indexOf(character));
|
|
70
|
-
}
|
|
71
|
-
if (value >= GENERATED_SECRET_VALUE_LIMIT) {
|
|
72
|
-
throw new TypeError("Generated secret is outside the H1 value range.");
|
|
73
|
-
}
|
|
74
|
-
return integerToBytes(value, CLOUD_GENERATED_SECRET_SEED_BYTES);
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Combines the generated and password factors into independent Cloud bundle
|
|
78
|
-
* encryption and authentication values.
|
|
79
|
-
*/
|
|
80
|
-
export async function deriveCloudKeys(generatedSecret, password) {
|
|
81
|
-
const normalizedPassword = normalizeCloudPassword(password);
|
|
82
|
-
const seed = parseCloudGeneratedSecret(generatedSecret);
|
|
83
|
-
const passwordBytes = encoder.encode(normalizedPassword);
|
|
84
|
-
let encryptionKey;
|
|
85
|
-
let authHash;
|
|
86
|
-
try {
|
|
87
|
-
encryptionKey = await deriveCombinedKey(seed, passwordBytes, "encryption");
|
|
88
|
-
authHash = await deriveCombinedKey(seed, passwordBytes, "authentication");
|
|
89
|
-
return {
|
|
90
|
-
authHash: encodeBase64Url(authHash),
|
|
91
|
-
encryptionKey: encodeBase64Url(encryptionKey),
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
finally {
|
|
95
|
-
encryptionKey?.fill(0);
|
|
96
|
-
authHash?.fill(0);
|
|
97
|
-
seed.fill(0);
|
|
98
|
-
passwordBytes.fill(0);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
async function deriveCombinedKey(seed, password, purpose) {
|
|
102
|
-
const passwordSalt = await deriveHkdf(seed, `password-salt/${purpose}`);
|
|
103
|
-
let generatedPart;
|
|
104
|
-
let passwordPart;
|
|
105
|
-
try {
|
|
106
|
-
generatedPart = await deriveHkdf(seed, `generated-factor/${purpose}`);
|
|
107
|
-
passwordPart = await derivePbkdf2(password, passwordSalt);
|
|
108
|
-
const combined = new Uint8Array(KEY_BYTES);
|
|
109
|
-
for (let index = 0; index < combined.length; index += 1) {
|
|
110
|
-
combined[index] = passwordPart[index] ^ generatedPart[index];
|
|
111
|
-
}
|
|
112
|
-
return combined;
|
|
113
|
-
}
|
|
114
|
-
finally {
|
|
115
|
-
passwordSalt.fill(0);
|
|
116
|
-
generatedPart?.fill(0);
|
|
117
|
-
passwordPart?.fill(0);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
async function deriveHkdf(seed, info) {
|
|
121
|
-
const key = await globalThis.crypto.subtle.importKey("raw", seed, "HKDF", false, [
|
|
122
|
-
"deriveBits",
|
|
123
|
-
]);
|
|
124
|
-
return new Uint8Array(await globalThis.crypto.subtle.deriveBits({
|
|
125
|
-
hash: "SHA-256",
|
|
126
|
-
info: encoder.encode(`happy-agent-cloud-keys/H1/${info}`),
|
|
127
|
-
name: "HKDF",
|
|
128
|
-
salt: KDF_SALT,
|
|
129
|
-
}, key, KEY_BYTES * 8));
|
|
130
|
-
}
|
|
131
|
-
async function derivePbkdf2(password, salt) {
|
|
132
|
-
const key = await globalThis.crypto.subtle.importKey("raw", password, "PBKDF2", false, [
|
|
133
|
-
"deriveBits",
|
|
134
|
-
]);
|
|
135
|
-
return new Uint8Array(await globalThis.crypto.subtle.deriveBits({
|
|
136
|
-
hash: "SHA-256",
|
|
137
|
-
iterations: PBKDF2_ITERATIONS,
|
|
138
|
-
name: "PBKDF2",
|
|
139
|
-
salt,
|
|
140
|
-
}, key, KEY_BYTES * 8));
|
|
141
|
-
}
|
|
142
|
-
function bytesToInteger(bytes) {
|
|
143
|
-
let value = 0n;
|
|
144
|
-
for (const byte of bytes)
|
|
145
|
-
value = (value << 8n) | BigInt(byte);
|
|
146
|
-
return value;
|
|
147
|
-
}
|
|
148
|
-
function integerToBytes(value, length) {
|
|
149
|
-
const bytes = new Uint8Array(length);
|
|
150
|
-
for (let index = bytes.length - 1; index >= 0; index -= 1) {
|
|
151
|
-
bytes[index] = Number(value & 0xffn);
|
|
152
|
-
value >>= 8n;
|
|
153
|
-
}
|
|
154
|
-
return bytes;
|
|
155
|
-
}
|
|
156
|
-
function encodeBase64Url(bytes) {
|
|
157
|
-
const alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
|
|
158
|
-
let encoded = "";
|
|
159
|
-
let bits = 0;
|
|
160
|
-
let buffer = 0;
|
|
161
|
-
for (const byte of bytes) {
|
|
162
|
-
buffer = (buffer << 8) | byte;
|
|
163
|
-
bits += 8;
|
|
164
|
-
while (bits >= 6) {
|
|
165
|
-
bits -= 6;
|
|
166
|
-
encoded += alphabet[(buffer >>> bits) & 0x3f];
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
if (bits > 0)
|
|
170
|
-
encoded += alphabet[(buffer << (6 - bits)) & 0x3f];
|
|
171
|
-
return encoded;
|
|
172
|
-
}
|
|
173
|
-
//# sourceMappingURL=cloudEncryption.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cloudEncryption.js","sourceRoot":"","sources":["../sources/cloudEncryption.ts"],"names":[],"mappings":"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"}
|
package/dist/protocol/crdt.d.ts
DELETED
|
@@ -1,310 +0,0 @@
|
|
|
1
|
-
/** Local-first Loro documents that may synchronize through Murmur. */
|
|
2
|
-
import { type Static } from "@sinclair/typebox";
|
|
3
|
-
/** The stable Murmur service identifier for every Happy CRDT service. */
|
|
4
|
-
export declare const CRDT_MURMUR_SERVICE: "crdt.loro";
|
|
5
|
-
/** An immutable application-owned discriminator such as `todo` or `com.example.board`. */
|
|
6
|
-
export declare const crdtServiceKindSchema: import("@sinclair/typebox").TString;
|
|
7
|
-
export type CrdtServiceKind = Static<typeof crdtServiceKindSchema>;
|
|
8
|
-
/** Human-readable display text, never an identifier. */
|
|
9
|
-
export declare const crdtServiceNameSchema: import("@sinclair/typebox").TString;
|
|
10
|
-
export type CrdtServiceName = Static<typeof crdtServiceNameSchema>;
|
|
11
|
-
/** Up to 512 KiB of decoded Loro bytes, encoded as unpadded base64url. */
|
|
12
|
-
export declare const crdtEncodedBytesSchema: import("@sinclair/typebox").TString;
|
|
13
|
-
export type CrdtEncodedBytes = Static<typeof crdtEncodedBytesSchema>;
|
|
14
|
-
/** A 32-byte Murmur account or session identity encoded as unpadded base64url. */
|
|
15
|
-
export declare const crdtMurmurIdentitySchema: import("@sinclair/typebox").TString;
|
|
16
|
-
export type CrdtMurmurIdentity = Static<typeof crdtMurmurIdentitySchema>;
|
|
17
|
-
/** An opaque Happy Cloud user ID used to select a sharing participant. */
|
|
18
|
-
export declare const crdtCloudIdSchema: import("@sinclair/typebox").TString;
|
|
19
|
-
export type CrdtCloudId = Static<typeof crdtCloudIdSchema>;
|
|
20
|
-
/** One structurally valid JSON value produced by Loro's document projection. */
|
|
21
|
-
export declare const crdtJsonValueSchema: import("@sinclair/typebox").TRecursive<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TThis>, import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TThis>]>>;
|
|
22
|
-
export type CrdtJsonValue = Static<typeof crdtJsonValueSchema>;
|
|
23
|
-
export declare const crdtTreeLimitViolationSchema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"depth">, import("@sinclair/typebox").TLiteral<"entries">, import("@sinclair/typebox").TLiteral<"invalid_value">, import("@sinclair/typebox").TLiteral<"serialized_size">, import("@sinclair/typebox").TLiteral<"string_size">, import("@sinclair/typebox").TLiteral<"total_values">]>;
|
|
24
|
-
export type CrdtTreeLimitViolation = Static<typeof crdtTreeLimitViolationSchema>;
|
|
25
|
-
/** Returns the first operational limit violated by a structurally valid CRDT tree. */
|
|
26
|
-
export declare function getCrdtTreeLimitViolation(root: CrdtTree): CrdtTreeLimitViolation | null;
|
|
27
|
-
/** The top-level JSON object produced by a Loro document. */
|
|
28
|
-
export declare const crdtTreeSchema: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TRecursive<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TThis>, import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TThis>]>>>;
|
|
29
|
-
export type CrdtTree = Static<typeof crdtTreeSchema>;
|
|
30
|
-
/** An account-level participant; devices are not participants. */
|
|
31
|
-
export declare const crdtParticipantSchema: import("@sinclair/typebox").TObject<{
|
|
32
|
-
identityKey: import("@sinclair/typebox").TString;
|
|
33
|
-
role: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"owner">, import("@sinclair/typebox").TLiteral<"admin">, import("@sinclair/typebox").TLiteral<"member">]>;
|
|
34
|
-
}>;
|
|
35
|
-
export type CrdtParticipant = Static<typeof crdtParticipantSchema>;
|
|
36
|
-
/** The complete confirmed Murmur policy snapshot. */
|
|
37
|
-
export declare const crdtPoliciesSchema: import("@sinclair/typebox").TObject<{
|
|
38
|
-
adminsAssignAdmins: import("@sinclair/typebox").TBoolean;
|
|
39
|
-
anyoneCanAddMembers: import("@sinclair/typebox").TBoolean;
|
|
40
|
-
sendPolicy: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"everyone">, import("@sinclair/typebox").TLiteral<"admins">]>;
|
|
41
|
-
}>;
|
|
42
|
-
export type CrdtPolicies = Static<typeof crdtPoliciesSchema>;
|
|
43
|
-
/** This service remains entirely local even when Murmur is online. */
|
|
44
|
-
export declare const crdtLocalSharingSchema: import("@sinclair/typebox").TObject<{
|
|
45
|
-
status: import("@sinclair/typebox").TLiteral<"local">;
|
|
46
|
-
}>;
|
|
47
|
-
export type CrdtLocalSharing = Static<typeof crdtLocalSharingSchema>;
|
|
48
|
-
/** This service has one encrypted Murmur sharing relationship. */
|
|
49
|
-
export declare const crdtSharedSharingSchema: import("@sinclair/typebox").TObject<{
|
|
50
|
-
owner: import("@sinclair/typebox").TString;
|
|
51
|
-
participants: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
|
|
52
|
-
identityKey: import("@sinclair/typebox").TString;
|
|
53
|
-
role: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"owner">, import("@sinclair/typebox").TLiteral<"admin">, import("@sinclair/typebox").TLiteral<"member">]>;
|
|
54
|
-
}>>;
|
|
55
|
-
policies: import("@sinclair/typebox").TObject<{
|
|
56
|
-
adminsAssignAdmins: import("@sinclair/typebox").TBoolean;
|
|
57
|
-
anyoneCanAddMembers: import("@sinclair/typebox").TBoolean;
|
|
58
|
-
sendPolicy: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"everyone">, import("@sinclair/typebox").TLiteral<"admins">]>;
|
|
59
|
-
}>;
|
|
60
|
-
recovery: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"ready">, import("@sinclair/typebox").TLiteral<"required">]>;
|
|
61
|
-
sessionId: import("@sinclair/typebox").TString;
|
|
62
|
-
status: import("@sinclair/typebox").TLiteral<"shared">;
|
|
63
|
-
}>;
|
|
64
|
-
export type CrdtSharedSharing = Static<typeof crdtSharedSharingSchema>;
|
|
65
|
-
export declare const crdtSharedSharingViolationSchema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"owner">, import("@sinclair/typebox").TLiteral<"participants">]>;
|
|
66
|
-
export type CrdtSharedSharingViolation = Static<typeof crdtSharedSharingViolationSchema>;
|
|
67
|
-
/** Checks participant ordering and the cross-field owner invariant. */
|
|
68
|
-
export declare function getCrdtSharedSharingViolation(value: CrdtSharedSharing): CrdtSharedSharingViolation | null;
|
|
69
|
-
export declare const crdtSharingSchema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
70
|
-
status: import("@sinclair/typebox").TLiteral<"local">;
|
|
71
|
-
}>, import("@sinclair/typebox").TObject<{
|
|
72
|
-
owner: import("@sinclair/typebox").TString;
|
|
73
|
-
participants: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
|
|
74
|
-
identityKey: import("@sinclair/typebox").TString;
|
|
75
|
-
role: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"owner">, import("@sinclair/typebox").TLiteral<"admin">, import("@sinclair/typebox").TLiteral<"member">]>;
|
|
76
|
-
}>>;
|
|
77
|
-
policies: import("@sinclair/typebox").TObject<{
|
|
78
|
-
adminsAssignAdmins: import("@sinclair/typebox").TBoolean;
|
|
79
|
-
anyoneCanAddMembers: import("@sinclair/typebox").TBoolean;
|
|
80
|
-
sendPolicy: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"everyone">, import("@sinclair/typebox").TLiteral<"admins">]>;
|
|
81
|
-
}>;
|
|
82
|
-
recovery: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"ready">, import("@sinclair/typebox").TLiteral<"required">]>;
|
|
83
|
-
sessionId: import("@sinclair/typebox").TString;
|
|
84
|
-
status: import("@sinclair/typebox").TLiteral<"shared">;
|
|
85
|
-
}>]>;
|
|
86
|
-
export type CrdtSharing = Static<typeof crdtSharingSchema>;
|
|
87
|
-
/** The bounded metadata used by catalogs and creation events. */
|
|
88
|
-
export declare const crdtServiceSummarySchema: import("@sinclair/typebox").TObject<{
|
|
89
|
-
createdAt: import("@sinclair/typebox").TInteger;
|
|
90
|
-
id: import("@sinclair/typebox").TString;
|
|
91
|
-
kind: import("@sinclair/typebox").TString;
|
|
92
|
-
name: import("@sinclair/typebox").TString;
|
|
93
|
-
service: import("@sinclair/typebox").TLiteral<"crdt.loro">;
|
|
94
|
-
sharing: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
95
|
-
status: import("@sinclair/typebox").TLiteral<"local">;
|
|
96
|
-
}>, import("@sinclair/typebox").TObject<{
|
|
97
|
-
owner: import("@sinclair/typebox").TString;
|
|
98
|
-
participants: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
|
|
99
|
-
identityKey: import("@sinclair/typebox").TString;
|
|
100
|
-
role: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"owner">, import("@sinclair/typebox").TLiteral<"admin">, import("@sinclair/typebox").TLiteral<"member">]>;
|
|
101
|
-
}>>;
|
|
102
|
-
policies: import("@sinclair/typebox").TObject<{
|
|
103
|
-
adminsAssignAdmins: import("@sinclair/typebox").TBoolean;
|
|
104
|
-
anyoneCanAddMembers: import("@sinclair/typebox").TBoolean;
|
|
105
|
-
sendPolicy: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"everyone">, import("@sinclair/typebox").TLiteral<"admins">]>;
|
|
106
|
-
}>;
|
|
107
|
-
recovery: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"ready">, import("@sinclair/typebox").TLiteral<"required">]>;
|
|
108
|
-
sessionId: import("@sinclair/typebox").TString;
|
|
109
|
-
status: import("@sinclair/typebox").TLiteral<"shared">;
|
|
110
|
-
}>]>;
|
|
111
|
-
updatedAt: import("@sinclair/typebox").TInteger;
|
|
112
|
-
version: import("@sinclair/typebox").TString;
|
|
113
|
-
}>;
|
|
114
|
-
export type CrdtServiceSummary = Static<typeof crdtServiceSummarySchema>;
|
|
115
|
-
/** A complete focused service, including its canonical Loro snapshot and JSON projection. */
|
|
116
|
-
export declare const crdtServiceSchema: import("@sinclair/typebox").TObject<{
|
|
117
|
-
createdAt: import("@sinclair/typebox").TInteger;
|
|
118
|
-
id: import("@sinclair/typebox").TString;
|
|
119
|
-
kind: import("@sinclair/typebox").TString;
|
|
120
|
-
name: import("@sinclair/typebox").TString;
|
|
121
|
-
service: import("@sinclair/typebox").TLiteral<"crdt.loro">;
|
|
122
|
-
sharing: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
123
|
-
status: import("@sinclair/typebox").TLiteral<"local">;
|
|
124
|
-
}>, import("@sinclair/typebox").TObject<{
|
|
125
|
-
owner: import("@sinclair/typebox").TString;
|
|
126
|
-
participants: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
|
|
127
|
-
identityKey: import("@sinclair/typebox").TString;
|
|
128
|
-
role: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"owner">, import("@sinclair/typebox").TLiteral<"admin">, import("@sinclair/typebox").TLiteral<"member">]>;
|
|
129
|
-
}>>;
|
|
130
|
-
policies: import("@sinclair/typebox").TObject<{
|
|
131
|
-
adminsAssignAdmins: import("@sinclair/typebox").TBoolean;
|
|
132
|
-
anyoneCanAddMembers: import("@sinclair/typebox").TBoolean;
|
|
133
|
-
sendPolicy: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"everyone">, import("@sinclair/typebox").TLiteral<"admins">]>;
|
|
134
|
-
}>;
|
|
135
|
-
recovery: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"ready">, import("@sinclair/typebox").TLiteral<"required">]>;
|
|
136
|
-
sessionId: import("@sinclair/typebox").TString;
|
|
137
|
-
status: import("@sinclair/typebox").TLiteral<"shared">;
|
|
138
|
-
}>]>;
|
|
139
|
-
state: import("@sinclair/typebox").TString;
|
|
140
|
-
tree: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TRecursive<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TThis>, import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TThis>]>>>;
|
|
141
|
-
updatedAt: import("@sinclair/typebox").TInteger;
|
|
142
|
-
version: import("@sinclair/typebox").TString;
|
|
143
|
-
}>;
|
|
144
|
-
export type CrdtService = Static<typeof crdtServiceSchema>;
|
|
145
|
-
/** `GET /v0/services/crdt` query parameters. */
|
|
146
|
-
export declare const crdtServiceListQuerySchema: import("@sinclair/typebox").TObject<{
|
|
147
|
-
after: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
148
|
-
kind: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
149
|
-
limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
150
|
-
}>;
|
|
151
|
-
export type CrdtServiceListQuery = Static<typeof crdtServiceListQuerySchema>;
|
|
152
|
-
/** `GET /v0/services/crdt` */
|
|
153
|
-
export declare const crdtServiceListResponseSchema: import("@sinclair/typebox").TObject<{
|
|
154
|
-
connection: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"offline">, import("@sinclair/typebox").TLiteral<"online">]>;
|
|
155
|
-
cursor: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
|
|
156
|
-
hasMore: import("@sinclair/typebox").TBoolean;
|
|
157
|
-
services: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
|
|
158
|
-
createdAt: import("@sinclair/typebox").TInteger;
|
|
159
|
-
id: import("@sinclair/typebox").TString;
|
|
160
|
-
kind: import("@sinclair/typebox").TString;
|
|
161
|
-
name: import("@sinclair/typebox").TString;
|
|
162
|
-
service: import("@sinclair/typebox").TLiteral<"crdt.loro">;
|
|
163
|
-
sharing: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
164
|
-
status: import("@sinclair/typebox").TLiteral<"local">;
|
|
165
|
-
}>, import("@sinclair/typebox").TObject<{
|
|
166
|
-
owner: import("@sinclair/typebox").TString;
|
|
167
|
-
participants: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
|
|
168
|
-
identityKey: import("@sinclair/typebox").TString;
|
|
169
|
-
role: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"owner">, import("@sinclair/typebox").TLiteral<"admin">, import("@sinclair/typebox").TLiteral<"member">]>;
|
|
170
|
-
}>>;
|
|
171
|
-
policies: import("@sinclair/typebox").TObject<{
|
|
172
|
-
adminsAssignAdmins: import("@sinclair/typebox").TBoolean;
|
|
173
|
-
anyoneCanAddMembers: import("@sinclair/typebox").TBoolean;
|
|
174
|
-
sendPolicy: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"everyone">, import("@sinclair/typebox").TLiteral<"admins">]>;
|
|
175
|
-
}>;
|
|
176
|
-
recovery: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"ready">, import("@sinclair/typebox").TLiteral<"required">]>;
|
|
177
|
-
sessionId: import("@sinclair/typebox").TString;
|
|
178
|
-
status: import("@sinclair/typebox").TLiteral<"shared">;
|
|
179
|
-
}>]>;
|
|
180
|
-
updatedAt: import("@sinclair/typebox").TInteger;
|
|
181
|
-
version: import("@sinclair/typebox").TString;
|
|
182
|
-
}>>;
|
|
183
|
-
updatedAt: import("@sinclair/typebox").TInteger;
|
|
184
|
-
version: import("@sinclair/typebox").TString;
|
|
185
|
-
}>;
|
|
186
|
-
export type CrdtServiceListResponse = Static<typeof crdtServiceListResponseSchema>;
|
|
187
|
-
/** The response shared by focused CRDT service reads and mutations. */
|
|
188
|
-
export declare const crdtServiceResponseSchema: import("@sinclair/typebox").TObject<{
|
|
189
|
-
service: import("@sinclair/typebox").TObject<{
|
|
190
|
-
createdAt: import("@sinclair/typebox").TInteger;
|
|
191
|
-
id: import("@sinclair/typebox").TString;
|
|
192
|
-
kind: import("@sinclair/typebox").TString;
|
|
193
|
-
name: import("@sinclair/typebox").TString;
|
|
194
|
-
service: import("@sinclair/typebox").TLiteral<"crdt.loro">;
|
|
195
|
-
sharing: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
196
|
-
status: import("@sinclair/typebox").TLiteral<"local">;
|
|
197
|
-
}>, import("@sinclair/typebox").TObject<{
|
|
198
|
-
owner: import("@sinclair/typebox").TString;
|
|
199
|
-
participants: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
|
|
200
|
-
identityKey: import("@sinclair/typebox").TString;
|
|
201
|
-
role: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"owner">, import("@sinclair/typebox").TLiteral<"admin">, import("@sinclair/typebox").TLiteral<"member">]>;
|
|
202
|
-
}>>;
|
|
203
|
-
policies: import("@sinclair/typebox").TObject<{
|
|
204
|
-
adminsAssignAdmins: import("@sinclair/typebox").TBoolean;
|
|
205
|
-
anyoneCanAddMembers: import("@sinclair/typebox").TBoolean;
|
|
206
|
-
sendPolicy: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"everyone">, import("@sinclair/typebox").TLiteral<"admins">]>;
|
|
207
|
-
}>;
|
|
208
|
-
recovery: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"ready">, import("@sinclair/typebox").TLiteral<"required">]>;
|
|
209
|
-
sessionId: import("@sinclair/typebox").TString;
|
|
210
|
-
status: import("@sinclair/typebox").TLiteral<"shared">;
|
|
211
|
-
}>]>;
|
|
212
|
-
state: import("@sinclair/typebox").TString;
|
|
213
|
-
tree: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TRecursive<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TThis>, import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TThis>]>>>;
|
|
214
|
-
updatedAt: import("@sinclair/typebox").TInteger;
|
|
215
|
-
version: import("@sinclair/typebox").TString;
|
|
216
|
-
}>;
|
|
217
|
-
}>;
|
|
218
|
-
export type CrdtServiceResponse = Static<typeof crdtServiceResponseSchema>;
|
|
219
|
-
/** Client result for creation, including the meaningful new-versus-retry status. */
|
|
220
|
-
export declare const createCrdtServiceResultSchema: import("@sinclair/typebox").TObject<{
|
|
221
|
-
httpStatus: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<200>, import("@sinclair/typebox").TLiteral<201>]>;
|
|
222
|
-
service: import("@sinclair/typebox").TObject<{
|
|
223
|
-
createdAt: import("@sinclair/typebox").TInteger;
|
|
224
|
-
id: import("@sinclair/typebox").TString;
|
|
225
|
-
kind: import("@sinclair/typebox").TString;
|
|
226
|
-
name: import("@sinclair/typebox").TString;
|
|
227
|
-
service: import("@sinclair/typebox").TLiteral<"crdt.loro">;
|
|
228
|
-
sharing: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
229
|
-
status: import("@sinclair/typebox").TLiteral<"local">;
|
|
230
|
-
}>, import("@sinclair/typebox").TObject<{
|
|
231
|
-
owner: import("@sinclair/typebox").TString;
|
|
232
|
-
participants: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
|
|
233
|
-
identityKey: import("@sinclair/typebox").TString;
|
|
234
|
-
role: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"owner">, import("@sinclair/typebox").TLiteral<"admin">, import("@sinclair/typebox").TLiteral<"member">]>;
|
|
235
|
-
}>>;
|
|
236
|
-
policies: import("@sinclair/typebox").TObject<{
|
|
237
|
-
adminsAssignAdmins: import("@sinclair/typebox").TBoolean;
|
|
238
|
-
anyoneCanAddMembers: import("@sinclair/typebox").TBoolean;
|
|
239
|
-
sendPolicy: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"everyone">, import("@sinclair/typebox").TLiteral<"admins">]>;
|
|
240
|
-
}>;
|
|
241
|
-
recovery: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"ready">, import("@sinclair/typebox").TLiteral<"required">]>;
|
|
242
|
-
sessionId: import("@sinclair/typebox").TString;
|
|
243
|
-
status: import("@sinclair/typebox").TLiteral<"shared">;
|
|
244
|
-
}>]>;
|
|
245
|
-
state: import("@sinclair/typebox").TString;
|
|
246
|
-
tree: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TRecursive<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TThis>, import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TThis>]>>>;
|
|
247
|
-
updatedAt: import("@sinclair/typebox").TInteger;
|
|
248
|
-
version: import("@sinclair/typebox").TString;
|
|
249
|
-
}>;
|
|
250
|
-
}>;
|
|
251
|
-
export type CreateCrdtServiceResult = Static<typeof createCrdtServiceResultSchema>;
|
|
252
|
-
/** Client result for membership mutations, including accepted-versus-no-op status. */
|
|
253
|
-
export declare const crdtServiceMemberMutationResultSchema: import("@sinclair/typebox").TObject<{
|
|
254
|
-
httpStatus: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<200>, import("@sinclair/typebox").TLiteral<202>]>;
|
|
255
|
-
service: import("@sinclair/typebox").TObject<{
|
|
256
|
-
createdAt: import("@sinclair/typebox").TInteger;
|
|
257
|
-
id: import("@sinclair/typebox").TString;
|
|
258
|
-
kind: import("@sinclair/typebox").TString;
|
|
259
|
-
name: import("@sinclair/typebox").TString;
|
|
260
|
-
service: import("@sinclair/typebox").TLiteral<"crdt.loro">;
|
|
261
|
-
sharing: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
262
|
-
status: import("@sinclair/typebox").TLiteral<"local">;
|
|
263
|
-
}>, import("@sinclair/typebox").TObject<{
|
|
264
|
-
owner: import("@sinclair/typebox").TString;
|
|
265
|
-
participants: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
|
|
266
|
-
identityKey: import("@sinclair/typebox").TString;
|
|
267
|
-
role: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"owner">, import("@sinclair/typebox").TLiteral<"admin">, import("@sinclair/typebox").TLiteral<"member">]>;
|
|
268
|
-
}>>;
|
|
269
|
-
policies: import("@sinclair/typebox").TObject<{
|
|
270
|
-
adminsAssignAdmins: import("@sinclair/typebox").TBoolean;
|
|
271
|
-
anyoneCanAddMembers: import("@sinclair/typebox").TBoolean;
|
|
272
|
-
sendPolicy: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"everyone">, import("@sinclair/typebox").TLiteral<"admins">]>;
|
|
273
|
-
}>;
|
|
274
|
-
recovery: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"ready">, import("@sinclair/typebox").TLiteral<"required">]>;
|
|
275
|
-
sessionId: import("@sinclair/typebox").TString;
|
|
276
|
-
status: import("@sinclair/typebox").TLiteral<"shared">;
|
|
277
|
-
}>]>;
|
|
278
|
-
state: import("@sinclair/typebox").TString;
|
|
279
|
-
tree: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TRecursive<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TThis>, import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TThis>]>>>;
|
|
280
|
-
updatedAt: import("@sinclair/typebox").TInteger;
|
|
281
|
-
version: import("@sinclair/typebox").TString;
|
|
282
|
-
}>;
|
|
283
|
-
}>;
|
|
284
|
-
export type CrdtServiceMemberMutationResult = Static<typeof crdtServiceMemberMutationResultSchema>;
|
|
285
|
-
/** `POST /v0/services/crdt` */
|
|
286
|
-
export declare const createCrdtServiceRequestSchema: import("@sinclair/typebox").TObject<{
|
|
287
|
-
id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
288
|
-
kind: import("@sinclair/typebox").TString;
|
|
289
|
-
mutationId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
290
|
-
name: import("@sinclair/typebox").TString;
|
|
291
|
-
state: import("@sinclair/typebox").TString;
|
|
292
|
-
}>;
|
|
293
|
-
export type CreateCrdtServiceRequest = Static<typeof createCrdtServiceRequestSchema>;
|
|
294
|
-
/** `POST /v0/services/crdt/:serviceId/updates` */
|
|
295
|
-
export declare const updateCrdtServiceRequestSchema: import("@sinclair/typebox").TObject<{
|
|
296
|
-
mutationId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
297
|
-
update: import("@sinclair/typebox").TString;
|
|
298
|
-
}>;
|
|
299
|
-
export type UpdateCrdtServiceRequest = Static<typeof updateCrdtServiceRequestSchema>;
|
|
300
|
-
/** `PUT /v0/services/crdt/:serviceId/members/:cloudId` */
|
|
301
|
-
export declare const addCrdtServiceMemberRequestSchema: import("@sinclair/typebox").TObject<{
|
|
302
|
-
mutationId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
303
|
-
}>;
|
|
304
|
-
export type AddCrdtServiceMemberRequest = Static<typeof addCrdtServiceMemberRequestSchema>;
|
|
305
|
-
/** `DELETE /v0/services/crdt/:serviceId/members/:identityKey` */
|
|
306
|
-
export declare const removeCrdtServiceMemberRequestSchema: import("@sinclair/typebox").TObject<{
|
|
307
|
-
mutationId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
308
|
-
}>;
|
|
309
|
-
export type RemoveCrdtServiceMemberRequest = Static<typeof removeCrdtServiceMemberRequestSchema>;
|
|
310
|
-
//# sourceMappingURL=crdt.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"crdt.d.ts","sourceRoot":"","sources":["../../sources/protocol/crdt.ts"],"names":[],"mappings":"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"}
|