@abraca/dabra 0.8.0 → 0.9.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/index.d.ts CHANGED
@@ -636,7 +636,7 @@ declare enum WebSocketStatus {
636
636
  Connected = "connected",
637
637
  Disconnected = "disconnected"
638
638
  }
639
- type AuthorizedScope = "read-write" | "readonly";
639
+ type AuthorizedScope = "service" | "admin" | "owner" | "editor" | "viewer" | "read-write" | "readonly";
640
640
  interface OutgoingMessageInterface {
641
641
  encoder: Encoder;
642
642
  type?: MessageType;
@@ -702,7 +702,7 @@ type StatesArray = {
702
702
  clientId: number;
703
703
  [key: string | number]: any;
704
704
  }[];
705
- type EffectiveRole = "owner" | "editor" | "viewer" | null;
705
+ type EffectiveRole = "service" | "admin" | "owner" | "editor" | "viewer" | null;
706
706
  /**
707
707
  * Ed25519 identity for passwordless crypto auth.
708
708
  *
@@ -731,6 +731,7 @@ interface UserProfile {
731
731
  username: string;
732
732
  email: string | null;
733
733
  displayName: string | null;
734
+ role: string;
734
735
  }
735
736
  interface DocumentMeta {
736
737
  id: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abraca/dabra",
3
- "version": "0.8.0",
3
+ "version": "0.9.0",
4
4
  "description": "abracadabra provider",
5
5
  "keywords": [
6
6
  "abracadabra",
@@ -208,8 +208,16 @@ export class AbracadabraProvider extends AbracadabraBaseProvider {
208
208
  override authenticatedHandler(scope: string) {
209
209
  super.authenticatedHandler(scope);
210
210
 
211
- this.effectiveRole =
212
- scope === "read-write" ? "editor" : "viewer";
211
+ const roleMap: Record<string, import("./types.ts").EffectiveRole> = {
212
+ service: "service",
213
+ admin: "admin",
214
+ owner: "owner",
215
+ editor: "editor",
216
+ viewer: "viewer",
217
+ "read-write": "editor",
218
+ readonly: "viewer",
219
+ };
220
+ this.effectiveRole = roleMap[scope] ?? "viewer";
213
221
 
214
222
  this.offlineStore?.savePermissionSnapshot(this.effectiveRole);
215
223
  }
@@ -283,7 +291,7 @@ export class AbracadabraProvider extends AbracadabraBaseProvider {
283
291
  }
284
292
 
285
293
  get canWrite(): boolean {
286
- return this.effectiveRole === "owner" || this.effectiveRole === "editor";
294
+ return this.effectiveRole != null && this.effectiveRole !== "viewer";
287
295
  }
288
296
 
289
297
  /** The AbracadabraClient instance for REST API access, if configured. */
package/src/types.ts CHANGED
@@ -40,7 +40,7 @@ export enum WebSocketStatus {
40
40
  Disconnected = "disconnected",
41
41
  }
42
42
 
43
- export type AuthorizedScope = "read-write" | "readonly";
43
+ export type AuthorizedScope = "service" | "admin" | "owner" | "editor" | "viewer" | "read-write" | "readonly";
44
44
 
45
45
  export interface OutgoingMessageInterface {
46
46
  encoder: Encoder;
@@ -128,7 +128,7 @@ export type StatesArray = { clientId: number; [key: string | number]: any }[];
128
128
 
129
129
  // ── Abracadabra extensions ────────────────────────────────────────────────────
130
130
 
131
- export type EffectiveRole = "owner" | "editor" | "viewer" | null;
131
+ export type EffectiveRole = "service" | "admin" | "owner" | "editor" | "viewer" | null;
132
132
 
133
133
  /**
134
134
  * Ed25519 identity for passwordless crypto auth.
@@ -165,6 +165,7 @@ export interface UserProfile {
165
165
  username: string;
166
166
  email: string | null;
167
167
  displayName: string | null;
168
+ role: string;
168
169
  }
169
170
 
170
171
  export interface DocumentMeta {