@dxos/client-protocol 0.8.4-main.f9ba587 → 0.8.4-main.fffef41

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.
Files changed (46) hide show
  1. package/dist/lib/browser/chunk-HIQWFHOK.mjs +25 -0
  2. package/dist/lib/browser/chunk-HIQWFHOK.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +21 -22
  4. package/dist/lib/browser/index.mjs.map +4 -4
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/types/index.mjs +9 -0
  7. package/dist/lib/browser/types/index.mjs.map +7 -0
  8. package/dist/lib/node-esm/chunk-TN3JZMTK.mjs +27 -0
  9. package/dist/lib/node-esm/chunk-TN3JZMTK.mjs.map +7 -0
  10. package/dist/lib/node-esm/index.mjs +20 -22
  11. package/dist/lib/node-esm/index.mjs.map +4 -4
  12. package/dist/lib/node-esm/meta.json +1 -1
  13. package/dist/lib/node-esm/types/index.mjs +10 -0
  14. package/dist/lib/node-esm/types/index.mjs.map +7 -0
  15. package/dist/types/src/echo.d.ts +8 -14
  16. package/dist/types/src/echo.d.ts.map +1 -1
  17. package/dist/types/src/halo.d.ts +1 -1
  18. package/dist/types/src/halo.d.ts.map +1 -1
  19. package/dist/types/src/index.d.ts +5 -5
  20. package/dist/types/src/index.d.ts.map +1 -1
  21. package/dist/types/src/{service-definitions.d.ts → service.d.ts} +2 -4
  22. package/dist/types/src/service.d.ts.map +1 -0
  23. package/dist/types/src/shell.d.ts +1 -1
  24. package/dist/types/src/shell.d.ts.map +1 -1
  25. package/dist/types/src/space.d.ts +26 -13
  26. package/dist/types/src/space.d.ts.map +1 -1
  27. package/dist/types/src/timeouts.d.ts +4 -0
  28. package/dist/types/src/timeouts.d.ts.map +1 -1
  29. package/dist/types/src/{schema.d.ts → types/Properties.d.ts} +6 -11
  30. package/dist/types/src/types/Properties.d.ts.map +1 -0
  31. package/dist/types/src/types/index.d.ts +2 -0
  32. package/dist/types/src/types/index.d.ts.map +1 -0
  33. package/dist/types/tsconfig.tsbuildinfo +1 -1
  34. package/package.json +25 -15
  35. package/src/config.ts +1 -1
  36. package/src/echo.ts +10 -19
  37. package/src/halo.ts +1 -1
  38. package/src/index.ts +5 -5
  39. package/src/{service-definitions.ts → service.ts} +2 -9
  40. package/src/shell.ts +1 -1
  41. package/src/space.ts +44 -20
  42. package/src/timeouts.ts +5 -0
  43. package/src/{schema.ts → types/Properties.ts} +4 -3
  44. package/src/types/index.ts +5 -0
  45. package/dist/types/src/schema.d.ts.map +0 -1
  46. package/dist/types/src/service-definitions.d.ts.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/client-protocol",
3
- "version": "0.8.4-main.f9ba587",
3
+ "version": "0.8.4-main.fffef41",
4
4
  "description": "Core DXOS Client API.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -11,14 +11,25 @@
11
11
  "type": "module",
12
12
  "exports": {
13
13
  ".": {
14
+ "source": "./src/index.ts",
14
15
  "types": "./dist/types/src/index.d.ts",
15
16
  "browser": "./dist/lib/browser/index.mjs",
16
17
  "node": "./dist/lib/node-esm/index.mjs"
18
+ },
19
+ "./types": {
20
+ "source": "./src/types/index.ts",
21
+ "types": "./dist/types/src/types/index.d.ts",
22
+ "browser": "./dist/lib/browser/types/index.mjs",
23
+ "node": "./dist/lib/node-esm/types/index.mjs"
17
24
  }
18
25
  },
19
26
  "types": "dist/types/src/index.d.ts",
20
27
  "typesVersions": {
21
- "*": {}
28
+ "*": {
29
+ "./types": [
30
+ "./dist/types/src/types/index.d.ts"
31
+ ]
32
+ }
22
33
  },
23
34
  "files": [
24
35
  "dist",
@@ -26,19 +37,18 @@
26
37
  ],
27
38
  "dependencies": {
28
39
  "base-x": "~3.0.9",
29
- "effect": "3.16.13",
30
- "@dxos/async": "0.8.4-main.f9ba587",
31
- "@dxos/config": "0.8.4-main.f9ba587",
32
- "@dxos/context": "0.8.4-main.f9ba587",
33
- "@dxos/credentials": "0.8.4-main.f9ba587",
34
- "@dxos/echo": "0.8.4-main.f9ba587",
35
- "@dxos/echo-db": "0.8.4-main.f9ba587",
36
- "@dxos/echo-schema": "0.8.4-main.f9ba587",
37
- "@dxos/invariant": "0.8.4-main.f9ba587",
38
- "@dxos/keys": "0.8.4-main.f9ba587",
39
- "@dxos/node-std": "0.8.4-main.f9ba587",
40
- "@dxos/protocols": "0.8.4-main.f9ba587",
41
- "@dxos/rpc": "0.8.4-main.f9ba587"
40
+ "effect": "3.18.3",
41
+ "@dxos/async": "0.8.4-main.fffef41",
42
+ "@dxos/config": "0.8.4-main.fffef41",
43
+ "@dxos/context": "0.8.4-main.fffef41",
44
+ "@dxos/credentials": "0.8.4-main.fffef41",
45
+ "@dxos/echo-db": "0.8.4-main.fffef41",
46
+ "@dxos/echo": "0.8.4-main.fffef41",
47
+ "@dxos/keys": "0.8.4-main.fffef41",
48
+ "@dxos/node-std": "0.8.4-main.fffef41",
49
+ "@dxos/invariant": "0.8.4-main.fffef41",
50
+ "@dxos/protocols": "0.8.4-main.fffef41",
51
+ "@dxos/rpc": "0.8.4-main.fffef41"
42
52
  },
43
53
  "peerDependencies": {
44
54
  "effect": "^3.13.3"
package/src/config.ts CHANGED
@@ -18,7 +18,7 @@ export const EXPECTED_CONFIG_VERSION = 1;
18
18
  export const defaultConfig: ConfigProto = { version: 1 };
19
19
 
20
20
  // TODO(burdon): Allow override via env? Generalize since currently NodeJS only.
21
- const HOME = typeof process !== 'undefined' ? process?.env?.HOME ?? '' : '';
21
+ const HOME = typeof process !== 'undefined' ? (process?.env?.HOME ?? '') : '';
22
22
 
23
23
  // Base directories.
24
24
  // TODO(burdon): Consider Windows, Linux, OSX.
package/src/echo.ts CHANGED
@@ -3,26 +3,19 @@
3
3
  //
4
4
 
5
5
  import type { MulticastObservable } from '@dxos/async';
6
- import type { QueryFn } from '@dxos/echo-db';
6
+ import type { Queryable } from '@dxos/echo-db';
7
7
  import type { PublicKey, SpaceId } from '@dxos/keys';
8
8
  import type { Invitation, SpaceArchive } from '@dxos/protocols/proto/dxos/client/services';
9
9
 
10
10
  import type { AuthenticatingInvitation } from './invitations';
11
- import type { PropertiesTypeProps } from './schema';
12
11
  import type { Space } from './space';
12
+ import type { PropertiesTypeProps } from './types';
13
13
 
14
14
  /**
15
- * TODO(burdon): Public API (move comments here).
15
+ * Public database API.
16
16
  */
17
- // TODO(wittjosiah): Rename?
18
- // https://ts.dev/style/#naming-style
19
- // ClientApi? ClientProtocol?
20
- export interface Echo extends MulticastObservable<Space[]> {
21
- /**
22
- * Resolves when the default space is available.
23
- */
24
- waitUntilReady(): Promise<void>;
25
-
17
+ // TODO(wittjosiah): Rename Database (not product name).
18
+ export interface Echo extends MulticastObservable<Space[]>, Queryable {
26
19
  /**
27
20
  * Observable which indicates when the default space is available.
28
21
  */
@@ -50,6 +43,11 @@ export interface Echo extends MulticastObservable<Space[]> {
50
43
  */
51
44
  get default(): Space;
52
45
 
46
+ /**
47
+ * Resolves when the default space is available.
48
+ */
49
+ waitUntilReady(): Promise<void>;
50
+
53
51
  /**
54
52
  * Creates a new space.
55
53
  */
@@ -66,11 +64,4 @@ export interface Echo extends MulticastObservable<Space[]> {
66
64
  join(invitation: Invitation | string): AuthenticatingInvitation;
67
65
 
68
66
  joinBySpaceKey(spaceKey: PublicKey): Promise<Space>;
69
-
70
- /**
71
- * Query all spaces.
72
- * @param filter
73
- * @param options
74
- */
75
- query: QueryFn;
76
67
  }
package/src/halo.ts CHANGED
@@ -6,8 +6,8 @@ import { type MulticastObservable } from '@dxos/async';
6
6
  import { type PublicKey } from '@dxos/keys';
7
7
  import { type Contact, type Device, type Identity, type Invitation } from '@dxos/protocols/proto/dxos/client/services';
8
8
  import {
9
- type DeviceProfileDocument,
10
9
  type Credential,
10
+ type DeviceProfileDocument,
11
11
  type Presentation,
12
12
  type ProfileDocument,
13
13
  } from '@dxos/protocols/proto/dxos/halo/credentials';
package/src/index.ts CHANGED
@@ -4,11 +4,11 @@
4
4
 
5
5
  export * from './client';
6
6
  export * from './config';
7
- export * from './echo';
8
- export * from './halo';
7
+ export type * from './echo';
8
+ export type * from './halo';
9
9
  export * from './invitations';
10
- export * from './service-definitions';
11
- export * from './shell';
10
+ export * from './service';
11
+ export type * from './shell';
12
12
  export * from './space';
13
13
  export * from './timeouts';
14
- export * from './schema';
14
+ export * from './types';
@@ -4,17 +4,16 @@
4
4
 
5
5
  import { type Event } from '@dxos/async';
6
6
  import { schema } from '@dxos/protocols/proto';
7
- import type { FunctionRegistryService } from '@dxos/protocols/proto/dxos/agent/functions';
8
7
  import type {
8
+ ContactsService,
9
9
  DevicesService,
10
+ EdgeAgentService,
10
11
  IdentityService,
11
12
  InvitationsService,
12
13
  LoggingService,
13
14
  NetworkService,
14
15
  SpacesService,
15
16
  SystemService,
16
- ContactsService,
17
- EdgeAgentService,
18
17
  } from '@dxos/protocols/proto/dxos/client/services';
19
18
  import type { DevtoolsHost } from '@dxos/protocols/proto/dxos/devtools/host';
20
19
  import type { QueryService } from '@dxos/protocols/proto/dxos/echo/query';
@@ -42,8 +41,6 @@ export type ClientServices = {
42
41
  ContactsService: ContactsService;
43
42
  EdgeAgentService: EdgeAgentService;
44
43
 
45
- FunctionRegistryService: FunctionRegistryService;
46
-
47
44
  // TODO(burdon): Deprecated.
48
45
  DevtoolsHost: DevtoolsHost;
49
46
 
@@ -84,12 +81,8 @@ export const clientServiceBundle = createServiceBundle<ClientServices>({
84
81
  ContactsService: schema.getService('dxos.client.services.ContactsService'),
85
82
  EdgeAgentService: schema.getService('dxos.client.services.EdgeAgentService'),
86
83
 
87
- // Agent-only.
88
- FunctionRegistryService: schema.getService('dxos.agent.functions.FunctionRegistryService'),
89
-
90
84
  // TODO(burdon): Deprecated.
91
85
  DevtoolsHost: schema.getService('dxos.devtools.host.DevtoolsHost'),
92
-
93
86
  TracingService: schema.getService('dxos.tracing.TracingService'),
94
87
  });
95
88
 
package/src/shell.ts CHANGED
@@ -5,8 +5,8 @@
5
5
  import { type Event } from '@dxos/async';
6
6
  import { type PublicKey } from '@dxos/keys';
7
7
  import {
8
- type InvitationUrlRequest,
9
8
  type AppContextRequest,
9
+ type InvitationUrlRequest,
10
10
  type LayoutRequest,
11
11
  type ShellLayout,
12
12
  } from '@dxos/protocols/proto/dxos/iframe';
package/src/space.ts CHANGED
@@ -2,16 +2,18 @@
2
2
  // Copyright 2021 DXOS.org
3
3
  //
4
4
 
5
- import { type MulticastObservable, type CleanupFn } from '@dxos/async';
5
+ import * as Schema from 'effect/Schema';
6
+
7
+ import { type CleanupFn, type MulticastObservable } from '@dxos/async';
6
8
  import { type SpecificCredential } from '@dxos/credentials';
7
- import { type QueueFactory, type EchoDatabase, type AnyLiveObject } from '@dxos/echo-db';
9
+ import { type AnyLiveObject, type EchoDatabase, type QueueFactory, type SpaceSyncState } from '@dxos/echo-db';
8
10
  import { type PublicKey, type SpaceId } from '@dxos/keys';
9
11
  import {
10
12
  type Contact,
11
13
  type CreateEpochRequest,
12
14
  type Invitation,
13
- type Space as SpaceData,
14
15
  type SpaceArchive,
16
+ type Space as SpaceData,
15
17
  type SpaceMember,
16
18
  type SpaceState,
17
19
  type UpdateMemberRoleRequest,
@@ -31,15 +33,18 @@ export type CreateEpochOptions = {
31
33
  export interface SpaceInternal {
32
34
  get data(): SpaceData;
33
35
 
34
- // TODO(dmaretskyi): Return epoch info.
35
- createEpoch(options?: CreateEpochOptions): Promise<void>;
36
-
37
36
  getCredentials(): Promise<Credential[]>;
38
37
 
39
38
  getEpochs(): Promise<SpecificCredential<Epoch>[]>;
40
39
 
40
+ // TODO(dmaretskyi): Return epoch info.
41
+ createEpoch(options?: CreateEpochOptions): Promise<void>;
42
+
43
+ // TOOD(burdon): Start to factor out credentials.
41
44
  removeMember(memberKey: PublicKey): Promise<void>;
42
45
 
46
+ export(): Promise<SpaceArchive>;
47
+
43
48
  /**
44
49
  * Migrate space data to the latest version.
45
50
  */
@@ -47,21 +52,31 @@ export interface SpaceInternal {
47
52
 
48
53
  setEdgeReplicationPreference(setting: EdgeReplicationSetting): Promise<void>;
49
54
 
50
- export(): Promise<SpaceArchive>;
55
+ /**
56
+ * Waits until the space is fully synced with EDGE.
57
+ * @throws If the EDGE sync is disabled.
58
+ */
59
+ syncToEdge(opts?: {
60
+ onProgress: (state: SpaceSyncState.PeerState | undefined) => void;
61
+ timeout?: number;
62
+ }): Promise<void>;
51
63
  }
52
64
 
53
- // TODO(burdon): Separate public API form implementation (move comments here).
65
+ export const SPACE_TAG = Symbol('dxos.client.protocol.Space');
66
+
54
67
  export interface Space {
55
- /**
56
- * Unique space identifier.
57
- */
58
- get id(): SpaceId;
68
+ readonly [SPACE_TAG]: true;
59
69
 
60
70
  /**
61
71
  * @deprecated Use `id`.
62
72
  */
63
73
  get key(): PublicKey;
64
74
 
75
+ /**
76
+ * Unique space identifier.
77
+ */
78
+ get id(): SpaceId;
79
+
65
80
  /**
66
81
  * Echo database.
67
82
  */
@@ -72,13 +87,9 @@ export interface Space {
72
87
  */
73
88
  get queues(): QueueFactory;
74
89
 
90
+ // TODO(burdon): Replace with state?
75
91
  get isOpen(): boolean;
76
92
 
77
- /**
78
- * Properties object.
79
- */
80
- get properties(): AnyLiveObject<any>;
81
-
82
93
  /**
83
94
  * Current state of the space.
84
95
  * The database is ready to be used in `SpaceState.SPACE_READY` state.
@@ -86,6 +97,11 @@ export interface Space {
86
97
  */
87
98
  get state(): MulticastObservable<SpaceState>;
88
99
 
100
+ /**
101
+ * Properties object.
102
+ */
103
+ get properties(): AnyLiveObject<any>;
104
+
89
105
  /**
90
106
  * Current state of space pipeline.
91
107
  */
@@ -101,11 +117,11 @@ export interface Space {
101
117
  // TODO(wittjosiah): Remove. This should not be exposed.
102
118
  get internal(): SpaceInternal;
103
119
 
104
- // TODO(wittjosiah): Rename activate/deactivate?
105
120
  /**
106
121
  * Activates the space enabling the use of the database and starts replication with peers.
107
122
  * The setting is persisted on the local device.
108
123
  */
124
+ // TODO(wittjosiah): Rename activate/deactivate?
109
125
  open(): Promise<void>;
110
126
 
111
127
  /**
@@ -123,13 +139,21 @@ export interface Space {
123
139
  createSnapshot(): Promise<SpaceSnapshot>;
124
140
 
125
141
  // TODO(burdon): Create invitation?
142
+ // TODO(burdon): Factor out membership, etc.
126
143
  share(options?: Partial<Invitation>): CancellableInvitation;
127
-
128
144
  admitContact(contact: Contact): Promise<void>;
129
-
130
145
  updateMemberRole(request: Omit<UpdateMemberRoleRequest, 'spaceKey'>): Promise<void>;
131
146
 
132
147
  // TODO(wittjosiah): Gather into messaging abstraction?
133
148
  postMessage: (channel: string, message: any) => Promise<void>;
134
149
  listen: (channel: string, callback: (message: GossipMessage) => void) => CleanupFn;
135
150
  }
151
+
152
+ export const isSpace = (object: unknown): object is Space =>
153
+ typeof object === 'object' && object != null && (object as Space)[SPACE_TAG] === true;
154
+
155
+ // TODO(burdon): Create lower-level definition (HasId, db, etc.) and move to @dxos/echo.
156
+ export const SpaceSchema: Schema.Schema<Space> = Schema.Any.pipe(
157
+ Schema.filter((space) => isSpace(space)),
158
+ Schema.annotations({ title: 'Space' }),
159
+ );
package/src/timeouts.ts CHANGED
@@ -33,6 +33,11 @@ export const LOAD_PROPERTIES_TIMEOUT = 3_000;
33
33
  */
34
34
  export const CREATE_SPACE_TIMEOUT = 5_000;
35
35
 
36
+ /**
37
+ * Timeout for creating new spaces.
38
+ */
39
+ export const IMPORT_SPACE_TIMEOUT = 30_000;
40
+
36
41
  /**
37
42
  * Timeout for loading of control feeds.
38
43
  */
@@ -2,10 +2,11 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import { Schema } from 'effect';
5
+ import * as Schema from 'effect/Schema';
6
6
 
7
7
  import { Type } from '@dxos/echo';
8
- import { TypedObject } from '@dxos/echo-schema';
8
+ import { TypedObject } from '@dxos/echo/internal';
9
+ import { Queue } from '@dxos/echo-db';
9
10
 
10
11
  export const TYPE_PROPERTIES = 'dxos.org/type/Properties';
11
12
 
@@ -19,7 +20,7 @@ export class PropertiesType extends TypedObject({
19
20
  // TODO(wittjosiah): Make generic?
20
21
  hue: Schema.optional(Schema.String),
21
22
  icon: Schema.optional(Schema.String),
22
- invocationTraceQueue: Schema.optional(Type.Ref(Type.Expando)),
23
+ invocationTraceQueue: Schema.optional(Type.Ref(Queue)),
23
24
  },
24
25
  { record: true },
25
26
  ) {}
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ export * from './Properties';
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/schema.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAGlC,eAAO,MAAM,eAAe,6BAA6B,CAAC;;;;;;;;;;;;;;;;;;;;AAG1D,qBAAa,cAAe,SAAQ,mBAYnC;CAAG;AAGJ,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,sBAAsB,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"service-definitions.d.ts","sourceRoot":"","sources":["../../../src/service-definitions.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAC1F,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,aAAa,EACb,aAAa,EACb,eAAe,EACf,gBAAgB,EACjB,MAAM,4CAA4C,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AACjG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,KAAK,aAAa,EAAuB,MAAM,WAAW,CAAC;AAMpE,MAAM,MAAM,cAAc,GAAG;IAC3B,aAAa,EAAE,aAAa,CAAC;IAC7B,cAAc,EAAE,cAAc,CAAC;IAC/B,cAAc,EAAE,cAAc,CAAC;IAE/B,eAAe,EAAE,eAAe,CAAC;IACjC,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,YAAY,EAAE,YAAY,CAAC;IAC3B,cAAc,EAAE,cAAc,CAAC;IAC/B,aAAa,EAAE,aAAa,CAAC;IAC7B,WAAW,EAAE,WAAW,CAAC;IACzB,eAAe,EAAE,eAAe,CAAC;IACjC,gBAAgB,EAAE,gBAAgB,CAAC;IAEnC,uBAAuB,EAAE,uBAAuB,CAAC;IAGjD,YAAY,EAAE,YAAY,CAAC;IAE3B,cAAc,EAAE,cAAc,CAAC;CAChC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,MAAM,EAAE,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;IACjC,WAAW,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IAC3C,QAAQ,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAGlC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,+BAqB9B,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG;IAChC,aAAa,EAAE,aAAa,CAAC;CAC9B,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,aAAa,CAAC,mBAAmB,CAElE,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,aAAa,EAAE,aAAa,CAAC;CAC9B,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,aAAa,CAAC,mBAAmB,CAElE,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,gBAAgB,CAE5D,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,YAAY,EAAE,YAAY,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAAC,kBAAkB,CAEhE,CAAC"}