@dxos/client-protocol 0.4.10-main.fa5a270 → 0.4.10-main.fe71b4c
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/lib/browser/index.mjs +18 -42
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/index.cjs +18 -42
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/types/src/echo.d.ts +8 -4
- package/dist/types/src/echo.d.ts.map +1 -1
- package/dist/types/src/halo.d.ts +18 -5
- package/dist/types/src/halo.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +0 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/invitations/encoder.d.ts +1 -1
- package/dist/types/src/invitations/encoder.d.ts.map +1 -1
- package/dist/types/src/schema.d.ts +19 -9
- package/dist/types/src/schema.d.ts.map +1 -1
- package/dist/types/src/space.d.ts +5 -6
- package/dist/types/src/space.d.ts.map +1 -1
- package/package.json +12 -17
- package/src/echo.ts +8 -5
- package/src/halo.ts +22 -5
- package/src/index.ts +2 -1
- package/src/invitations/encoder.ts +8 -2
- package/src/schema.ts +9 -9
- package/src/space.ts +6 -7
- package/dist/types/src/proto/gen/schema.d.ts +0 -15
- package/dist/types/src/proto/gen/schema.d.ts.map +0 -1
- package/dist/types/src/proto/index.d.ts +0 -2
- package/dist/types/src/proto/index.d.ts.map +0 -1
- package/src/proto/gen/schema.ts +0 -41
- package/src/proto/index.ts +0 -5
- package/src/proto/schema.proto +0 -16
|
@@ -25,11 +25,17 @@ var defaultKey = "__DEFAULT__";
|
|
|
25
25
|
// packages/sdk/client-protocol/src/invitations/encoder.ts
|
|
26
26
|
import base from "base-x";
|
|
27
27
|
import { schema } from "@dxos/protocols";
|
|
28
|
+
import { Invitation } from "@dxos/protocols/proto/dxos/client/services";
|
|
28
29
|
var base62 = base("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");
|
|
29
30
|
var codec = schema.getCodecForType("dxos.client.services.Invitation");
|
|
30
31
|
var InvitationEncoder = class {
|
|
31
32
|
static decode(text) {
|
|
32
|
-
|
|
33
|
+
const decodedInvitation = codec.decode(base62.decode(text));
|
|
34
|
+
if (decodedInvitation.type === Invitation.Type.MULTIUSE) {
|
|
35
|
+
decodedInvitation.type = Invitation.Type.INTERACTIVE;
|
|
36
|
+
decodedInvitation.multiUse = true;
|
|
37
|
+
}
|
|
38
|
+
return decodedInvitation;
|
|
33
39
|
}
|
|
34
40
|
static encode(invitation) {
|
|
35
41
|
return base62.encode(codec.encode({
|
|
@@ -40,6 +46,7 @@ var InvitationEncoder = class {
|
|
|
40
46
|
swarmKey: invitation.swarmKey,
|
|
41
47
|
state: invitation.state,
|
|
42
48
|
timeout: invitation.timeout,
|
|
49
|
+
guestKeypair: invitation.guestKeypair,
|
|
43
50
|
// TODO(wittjosiah): Make these optional to encode for greater privacy.
|
|
44
51
|
...invitation.spaceKey ? {
|
|
45
52
|
spaceKey: invitation.spaceKey
|
|
@@ -54,7 +61,7 @@ var InvitationEncoder = class {
|
|
|
54
61
|
// packages/sdk/client-protocol/src/invitations/invitations.ts
|
|
55
62
|
import { MulticastObservable } from "@dxos/async";
|
|
56
63
|
import { invariant } from "@dxos/invariant";
|
|
57
|
-
import { Invitation } from "@dxos/protocols/proto/dxos/client/services";
|
|
64
|
+
import { Invitation as Invitation2 } from "@dxos/protocols/proto/dxos/client/services";
|
|
58
65
|
var __dxlog_file = "/home/runner/work/dxos/dxos/packages/sdk/client-protocol/src/invitations/invitations.ts";
|
|
59
66
|
var AUTHENTICATION_CODE_LENGTH = 6;
|
|
60
67
|
var INVITATION_TIMEOUT = 3 * 6e4;
|
|
@@ -91,7 +98,7 @@ var AuthenticatingInvitation = class extends CancellableInvitation {
|
|
|
91
98
|
var wrapObservable = async (observable) => {
|
|
92
99
|
return new Promise((resolve, reject) => {
|
|
93
100
|
const subscription = observable.subscribe((invitation) => {
|
|
94
|
-
invariant(invitation?.state ===
|
|
101
|
+
invariant(invitation?.state === Invitation2.State.SUCCESS, void 0, {
|
|
95
102
|
F: __dxlog_file,
|
|
96
103
|
L: 98,
|
|
97
104
|
S: void 0,
|
|
@@ -109,34 +116,6 @@ var wrapObservable = async (observable) => {
|
|
|
109
116
|
});
|
|
110
117
|
};
|
|
111
118
|
|
|
112
|
-
// packages/sdk/client-protocol/src/proto/gen/schema.ts
|
|
113
|
-
import * as dxos_echo_schema from "@dxos/echo-schema";
|
|
114
|
-
var types = new dxos_echo_schema.TypeCollection();
|
|
115
|
-
var Properties = class _Properties extends dxos_echo_schema.TypedObject {
|
|
116
|
-
static filter(filter) {
|
|
117
|
-
return dxos_echo_schema.Filter.typename("dxos.sdk.client.Properties", filter);
|
|
118
|
-
}
|
|
119
|
-
constructor(initValues, opts) {
|
|
120
|
-
super({
|
|
121
|
-
...initValues
|
|
122
|
-
}, {
|
|
123
|
-
schema: _Properties.schema,
|
|
124
|
-
...opts
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
};
|
|
128
|
-
types.registerPrototype(Properties, {
|
|
129
|
-
typename: "dxos.sdk.client.Properties",
|
|
130
|
-
props: [
|
|
131
|
-
{
|
|
132
|
-
id: "name",
|
|
133
|
-
type: 1,
|
|
134
|
-
repeated: false
|
|
135
|
-
}
|
|
136
|
-
]
|
|
137
|
-
});
|
|
138
|
-
types.link();
|
|
139
|
-
|
|
140
119
|
// packages/sdk/client-protocol/src/service-definitions.ts
|
|
141
120
|
import { schema as schema2 } from "@dxos/protocols";
|
|
142
121
|
import { createServiceBundle } from "@dxos/rpc";
|
|
@@ -179,15 +158,14 @@ var CREATE_SPACE_TIMEOUT = 5e3;
|
|
|
179
158
|
var LOAD_CONTROL_FEEDS_TIMEOUT = 3e3;
|
|
180
159
|
|
|
181
160
|
// packages/sdk/client-protocol/src/schema.ts
|
|
182
|
-
import
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
}).pipe(E.echoObject("dxos.sdk.client.Properties", "0.1.0"));
|
|
161
|
+
import { echoObject, S } from "@dxos/echo-schema";
|
|
162
|
+
var _Properties = S.struct({
|
|
163
|
+
name: S.optional(S.string)
|
|
164
|
+
}, {
|
|
165
|
+
key: S.string,
|
|
166
|
+
value: S.any
|
|
167
|
+
}).pipe(echoObject("dxos.sdk.client.Properties", "0.1.0"));
|
|
168
|
+
var Properties = _Properties;
|
|
191
169
|
export {
|
|
192
170
|
AUTHENTICATION_CODE_LENGTH,
|
|
193
171
|
AUTH_TIMEOUT,
|
|
@@ -214,7 +192,6 @@ export {
|
|
|
214
192
|
LOAD_PROPERTIES_TIMEOUT,
|
|
215
193
|
PROXY_CONNECTION_TIMEOUT,
|
|
216
194
|
Properties,
|
|
217
|
-
PropertiesSchema,
|
|
218
195
|
RESOURCE_LOCK_TIMEOUT,
|
|
219
196
|
STATUS_TIMEOUT,
|
|
220
197
|
appServiceBundle,
|
|
@@ -224,7 +201,6 @@ export {
|
|
|
224
201
|
getProfilePath,
|
|
225
202
|
iframeServiceBundle,
|
|
226
203
|
shellServiceBundle,
|
|
227
|
-
types,
|
|
228
204
|
workerServiceBundle,
|
|
229
205
|
wrapObservable
|
|
230
206
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../src/config.ts", "../../../src/echo.ts", "../../../src/invitations/encoder.ts", "../../../src/invitations/invitations.ts", "../../../src/
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { type ConfigProto } from '@dxos/config';\n\nexport const DEFAULT_INTERNAL_CHANNEL = 'dxos:vault';\nexport const DEFAULT_CLIENT_CHANNEL = 'dxos:app';\nexport const DEFAULT_SHELL_CHANNEL = 'dxos:shell';\n\nexport const DEFAULT_VAULT_ORIGIN = 'https://halo.dxos.org';\nexport const DEFAULT_VAULT_URL = DEFAULT_VAULT_ORIGIN + '/vault.html';\n\nexport const EXPECTED_CONFIG_VERSION = 1;\nexport const defaultConfig: ConfigProto = { version: 1 };\n\n// TODO(burdon): Allow override via env? Generalize since currently NodeJS only.\nconst HOME = typeof process !== 'undefined' ? process?.env?.HOME ?? '' : '';\n\n// Base directories.\n// TODO(burdon): Consider Windows, Linux, OSX.\n// https://wiki.archlinux.org/title/XDG_Base_Directory\n// Each `/dx` directory should contain `/profile/<DX_PROFILE>` subdirectories.\nexport const getProfilePath = (root: string, profile: string, file: string | undefined = undefined) =>\n `${root}/profile/${profile}` + (file ? `/${file}` : '');\n\n// XDG_CONFIG_HOME (Analogous to /etc.)\nexport const DX_CONFIG = `${HOME}/.config/dx`;\n\n// XDG_CACHE_HOME (Analogous to /var/cache).\nexport const DX_CACHE = `${HOME}/.cache/dx`;\n\n// TODO(burdon): Storage should use this by default (make path optional).\n// XDG_DATA_HOME (Analogous to /usr/share).\nexport const DX_DATA = `${HOME}/.local/share/dx`;\n\n// XDG_STATE_HOME (Analogous to /var/lib).\nexport const DX_STATE = `${HOME}/.local/state/dx`;\n\n// XDG_RUNTIME_DIR (Non-essential files, sockets, etc.)\nexport const DX_RUNTIME = '/tmp/dx/run';\n\nexport const ENV_DX_CONFIG = 'DX_CONFIG';\nexport const ENV_DX_PROFILE = 'DX_PROFILE';\nexport const ENV_DX_PROFILE_DEFAULT = 'default';\n", "//\n// Copyright 2021 DXOS.org\n//\n\nimport type { MulticastObservable } from '@dxos/async';\nimport type { TypeCollection } from '@dxos/echo-schema';\nimport type { PublicKey } from '@dxos/keys';\nimport type { Invitation } from '@dxos/protocols/proto/dxos/client/services';\n\nimport type { AuthenticatingInvitation } from './invitations';\nimport type { Space } from './space';\n\n// Space properties key for default metadata.\n// TODO(wittjosiah): Remove. Default space should be indicated by data in HALO space.\nexport const defaultKey = '__DEFAULT__';\n\n/**\n * TODO(burdon): Public API (move comments here).\n */\n// TODO(wittjosiah): Rename?\n// https://ts.dev/style/#naming-style\n// ClientApi? ClientProtocol?\nexport interface Echo extends MulticastObservable<Space[]> {\n /**\n * Resolves when the default space is available.\n */\n // TODO(wittjosiah): Remove. Ensure default space is always available.\n get isReady(): MulticastObservable<boolean>;\n\n /**\n * Returns the list of spaces.\n */\n get(): Space[];\n\n /**\n * Returns the space with the given key.\n */\n get(spaceKey: PublicKey): Space | undefined;\n\n /**\n * Returns the default space.\n */\n get default(): Space;\n\n /**\n * Creates a new space.\n */\n create(): Promise<Space>;\n\n /**\n * Creates a space from the given snapshot.\n */\n // clone(snapshot: SpaceSnapshot): Promise<Space>;\n\n /**\n * Joins an existing space using the given invitation.\n */\n join(invitation: Invitation | string): AuthenticatingInvitation;\n\n /**\n * Adds a schema to ECHO.\n */\n // TODO(dmaretskyi): Rename `addTypes`.\n addSchema(schema: TypeCollection): void;\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport base from 'base-x';\n\nimport { schema } from '@dxos/protocols';\nimport { type Invitation } from '@dxos/protocols/proto/dxos/client/services';\n\n// Encode with URL-safe alpha-numeric characters.\nconst base62 = base('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');\n\nconst codec = schema.getCodecForType('dxos.client.services.Invitation');\n\n/**\n * Encodes and decodes an invitation proto into/from alphanumeric chars.\n */\nexport class InvitationEncoder {\n static decode(text: string): Invitation {\n return codec.decode(base62.decode(text));\n }\n\n static encode(invitation: Invitation): string {\n return base62.encode(\n codec.encode({\n invitationId: invitation.invitationId,\n type: invitation.type,\n kind: invitation.kind,\n authMethod: invitation.authMethod,\n swarmKey: invitation.swarmKey,\n state: invitation.state,\n timeout: invitation.timeout,\n // TODO(wittjosiah): Make these optional to encode for greater privacy.\n ...(invitation.spaceKey ? { spaceKey: invitation.spaceKey } : {}),\n ...(invitation.target ? { target: invitation.target } : {}),\n }),\n );\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { MulticastObservable, type Observable, type Subscriber } from '@dxos/async';\nimport { invariant } from '@dxos/invariant';\nimport { Invitation } from '@dxos/protocols/proto/dxos/client/services';\n\nexport const AUTHENTICATION_CODE_LENGTH = 6;\n\nexport const INVITATION_TIMEOUT = 3 * 60_000; // 3 mins.\n\nexport interface Invitations {\n created: MulticastObservable<CancellableInvitation[]>;\n accepted: MulticastObservable<AuthenticatingInvitation[]>;\n share(options?: Partial<Invitation>): CancellableInvitation;\n join(invitation: Invitation): AuthenticatingInvitation;\n}\n\n/**\n * Base class for all invitation observables and providers.\n */\nexport class CancellableInvitation extends MulticastObservable<Invitation> {\n private readonly _onCancel: () => Promise<void>;\n\n constructor({\n subscriber,\n initialInvitation,\n onCancel,\n }: {\n subscriber: Observable<Invitation> | Subscriber<Invitation>;\n initialInvitation: Invitation;\n onCancel: () => Promise<void>;\n }) {\n super(subscriber, initialInvitation);\n this._onCancel = onCancel;\n }\n\n cancel(): Promise<void> {\n return this._onCancel();\n }\n\n get expired() {\n const invitation = this.get();\n return (\n invitation.created &&\n invitation.lifetime &&\n invitation.lifetime !== 0 &&\n invitation.created.getTime() + invitation.lifetime * 1000 < Date.now()\n );\n }\n\n get expiry() {\n const invitation = this.get();\n return invitation.created && invitation.lifetime && invitation.lifetime !== 0\n ? new Date(invitation.created.getTime() + invitation.lifetime * 1000)\n : undefined;\n }\n}\n\n/**\n * Cancelable observer that relays authentication requests.\n */\nexport class AuthenticatingInvitation extends CancellableInvitation {\n private readonly _onAuthenticate: (authCode: string) => Promise<void>;\n\n constructor({\n subscriber,\n initialInvitation,\n onCancel,\n onAuthenticate,\n }: {\n subscriber: Observable<Invitation> | Subscriber<Invitation>;\n initialInvitation: Invitation;\n onCancel: () => Promise<void>;\n onAuthenticate: (authCode: string) => Promise<void>;\n }) {\n super({ subscriber, initialInvitation, onCancel });\n this._onAuthenticate = onAuthenticate;\n }\n\n async authenticate(authCode: string): Promise<void> {\n return this._onAuthenticate(authCode);\n }\n}\n\n/**\n * Testing util to wrap non-authenticating observable with promise.\n * Don't use this in production code.\n * @deprecated\n */\n// TODO(wittjosiah): Move to testing.\nexport const wrapObservable = async (observable: CancellableInvitation): Promise<Invitation> => {\n return new Promise((resolve, reject) => {\n const subscription = observable.subscribe(\n (invitation: Invitation | undefined) => {\n // TODO(burdon): Throw error if auth requested.\n invariant(invitation?.state === Invitation.State.SUCCESS);\n subscription.unsubscribe();\n resolve(invitation);\n },\n (err: Error) => {\n subscription.unsubscribe();\n reject(err);\n },\n );\n });\n};\n", "/**\n * @generated @dxos/echo-typegen src/proto/schema.proto\n **/\n\nimport * as dxos_echo_schema from \"@dxos/echo-schema\";\n\nexport const types = new dxos_echo_schema.TypeCollection();\n\nexport type PropertiesProps = {\n name: string;\n};\n\nexport class Properties extends dxos_echo_schema.TypedObject<PropertiesProps> {\n declare static readonly schema: dxos_echo_schema.Schema;\n\n static filter(\n filter?:\n | Partial<PropertiesProps>\n | dxos_echo_schema.OperatorFilter<Properties>,\n ): dxos_echo_schema.Filter<Properties> {\n return dxos_echo_schema.Filter.typename(\n \"dxos.sdk.client.Properties\",\n filter,\n );\n }\n\n constructor(\n initValues?: Partial<PropertiesProps>,\n opts?: dxos_echo_schema.TypedObjectOptions,\n ) {\n super({ ...initValues }, { schema: Properties.schema, ...opts });\n }\n declare name: string;\n}\n\ntypes.registerPrototype(Properties, {\n typename: \"dxos.sdk.client.Properties\",\n props: [{ id: \"name\", type: 1, repeated: false }],\n});\n\ntypes.link();\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { type Event } from '@dxos/async';\nimport { type Context } from '@dxos/context';\nimport { schema } from '@dxos/protocols';\nimport { type FunctionRegistryService } from '@dxos/protocols/proto/dxos/agent/functions';\nimport {\n type IndexService,\n type DevicesService,\n type IdentityService,\n type InvitationsService,\n type LoggingService,\n type NetworkService,\n type SpacesService,\n type SystemService,\n} from '@dxos/protocols/proto/dxos/client/services';\nimport { type DevtoolsHost } from '@dxos/protocols/proto/dxos/devtools/host';\nimport { type DataService } from '@dxos/protocols/proto/dxos/echo/service';\nimport type { AppService, ShellService, WorkerService } from '@dxos/protocols/proto/dxos/iframe';\nimport type { BridgeService } from '@dxos/protocols/proto/dxos/mesh/bridge';\nimport { type TracingService } from '@dxos/protocols/proto/dxos/tracing';\nimport { createServiceBundle, type ServiceBundle } from '@dxos/rpc';\n\n//\n// NOTE: Should contain client/proxy dependencies only.\n//\n\nexport type ClientServices = {\n SystemService: SystemService;\n NetworkService: NetworkService;\n LoggingService: LoggingService;\n\n IdentityService: IdentityService;\n InvitationsService: InvitationsService;\n IndexService: IndexService;\n DevicesService: DevicesService;\n SpacesService: SpacesService;\n DataService: DataService;\n\n FunctionRegistryService: FunctionRegistryService;\n\n // TODO(burdon): Deprecated.\n DevtoolsHost: DevtoolsHost;\n\n TracingService: TracingService;\n};\n\n/**\n * Provide access to client services definitions and service handler.\n */\nexport interface ClientServicesProvider {\n /**\n * The connection to the services provider was termintaed.\n *\n * This should fire if the services disconnect unexpectedly or during a client reset.\n */\n closed: Event<Error | undefined>;\n descriptors: ServiceBundle<ClientServices>;\n services: Partial<ClientServices>;\n\n open(ctx: Context): Promise<void>;\n close(ctx: Context): Promise<void>;\n}\n\n/**\n * Services supported by host.\n */\nexport const clientServiceBundle = createServiceBundle<ClientServices>({\n SystemService: schema.getService('dxos.client.services.SystemService'),\n NetworkService: schema.getService('dxos.client.services.NetworkService'),\n LoggingService: schema.getService('dxos.client.services.LoggingService'),\n\n IdentityService: schema.getService('dxos.client.services.IdentityService'),\n IndexService: schema.getService('dxos.client.services.IndexService'),\n InvitationsService: schema.getService('dxos.client.services.InvitationsService'),\n DevicesService: schema.getService('dxos.client.services.DevicesService'),\n SpacesService: schema.getService('dxos.client.services.SpacesService'),\n DataService: schema.getService('dxos.echo.service.DataService'),\n\n // Agent-only.\n FunctionRegistryService: schema.getService('dxos.agent.functions.FunctionRegistryService'),\n\n // TODO(burdon): Deprecated.\n DevtoolsHost: schema.getService('dxos.devtools.host.DevtoolsHost'),\n\n TracingService: schema.getService('dxos.tracing.TracingService'),\n});\n\nexport type IframeServiceBundle = {\n BridgeService: BridgeService;\n};\n\nexport const iframeServiceBundle: ServiceBundle<IframeServiceBundle> = {\n BridgeService: schema.getService('dxos.mesh.bridge.BridgeService'),\n};\n\nexport type WorkerServiceBundle = {\n WorkerService: WorkerService;\n};\n\nexport const workerServiceBundle: ServiceBundle<WorkerServiceBundle> = {\n WorkerService: schema.getService('dxos.iframe.WorkerService'),\n};\n\nexport type AppServiceBundle = {\n AppService: AppService;\n};\n\nexport const appServiceBundle: ServiceBundle<AppServiceBundle> = {\n AppService: schema.getService('dxos.iframe.AppService'),\n};\n\nexport type ShellServiceBundle = {\n ShellService: ShellService;\n};\n\nexport const shellServiceBundle: ServiceBundle<ShellServiceBundle> = {\n ShellService: schema.getService('dxos.iframe.ShellService'),\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\n/**\n * Timeout for making rpc connections from remote proxies.\n */\nexport const PROXY_CONNECTION_TIMEOUT = 30_000;\n\n/**\n * Timeout for the device to be added to the trusted set during auth.\n */\nexport const AUTH_TIMEOUT = 30_000;\n\n/**\n * Timeout for how long the remote client will wait before assuming the connection is lost.\n */\nexport const STATUS_TIMEOUT = 10_000;\n\n/**\n * Timeout for waiting before stealing resource lock.\n */\nexport const RESOURCE_LOCK_TIMEOUT = 3_000;\n\n/**\n * Timeout for space properties to be loaded in the set of tracked items.\n * Accounts for latency between SpaceService reporting the space as READY and DataService streaming the item states.\n */\nexport const LOAD_PROPERTIES_TIMEOUT = 3_000;\n\n/**\n * Timeout for creating new spaces.\n */\nexport const CREATE_SPACE_TIMEOUT = 5_000;\n\n/**\n * Timeout for loading of control feeds.\n */\nexport const LOAD_CONTROL_FEEDS_TIMEOUT = 3_000;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as S from '@effect/schema/Schema';\n\nimport * as E from '@dxos/echo-schema';\n\nexport const PropertiesSchema = S.struct({\n name: S.optional(S.string),\n // TODO(dmaretskyi): Remove.\n 'composer.dxos.org.opened': S.optional(S.number),\n 'composer.dxos.org.version': S.optional(S.union(S.string, S.number)),\n 'braneframe.Folder': S.optional(E.ref(E.AnyEchoObject)),\n}).pipe(E.echoObject('dxos.sdk.client.Properties', '0.1.0'));\n"],
|
|
5
|
-
"mappings": ";AAMO,IAAMA,2BAA2B;AACjC,IAAMC,yBAAyB;AAC/B,IAAMC,wBAAwB;AAE9B,IAAMC,uBAAuB;AAC7B,IAAMC,oBAAoBD,uBAAuB;AAEjD,IAAME,0BAA0B;AAChC,IAAMC,gBAA6B;EAAEC,SAAS;AAAE;AAGvD,IAAMC,OAAO,OAAOC,YAAY,cAAcA,SAASC,KAAKF,QAAQ,KAAK;AAMlE,IAAMG,iBAAiB,CAACC,MAAcC,SAAiBC,OAA2BC,WACvF,GAAGH,IAAAA,YAAgBC,OAAAA,MAAaC,OAAO,IAAIA,IAAAA,KAAS;AAG/C,IAAME,YAAY,GAAGR,IAAAA;AAGrB,IAAMS,WAAW,GAAGT,IAAAA;AAIpB,IAAMU,UAAU,GAAGV,IAAAA;AAGnB,IAAMW,WAAW,GAAGX,IAAAA;AAGpB,IAAMY,aAAa;AAEnB,IAAMC,gBAAgB;AACtB,IAAMC,iBAAiB;AACvB,IAAMC,yBAAyB;;;
|
|
6
|
-
"names": ["DEFAULT_INTERNAL_CHANNEL", "DEFAULT_CLIENT_CHANNEL", "DEFAULT_SHELL_CHANNEL", "DEFAULT_VAULT_ORIGIN", "DEFAULT_VAULT_URL", "EXPECTED_CONFIG_VERSION", "defaultConfig", "version", "HOME", "process", "env", "getProfilePath", "root", "profile", "file", "undefined", "DX_CONFIG", "DX_CACHE", "DX_DATA", "DX_STATE", "DX_RUNTIME", "ENV_DX_CONFIG", "ENV_DX_PROFILE", "ENV_DX_PROFILE_DEFAULT", "defaultKey", "base", "schema", "base62", "base", "codec", "schema", "getCodecForType", "InvitationEncoder", "decode", "text", "
|
|
3
|
+
"sources": ["../../../src/config.ts", "../../../src/echo.ts", "../../../src/invitations/encoder.ts", "../../../src/invitations/invitations.ts", "../../../src/service-definitions.ts", "../../../src/timeouts.ts", "../../../src/schema.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { type ConfigProto } from '@dxos/config';\n\nexport const DEFAULT_INTERNAL_CHANNEL = 'dxos:vault';\nexport const DEFAULT_CLIENT_CHANNEL = 'dxos:app';\nexport const DEFAULT_SHELL_CHANNEL = 'dxos:shell';\n\nexport const DEFAULT_VAULT_ORIGIN = 'https://halo.dxos.org';\nexport const DEFAULT_VAULT_URL = DEFAULT_VAULT_ORIGIN + '/vault.html';\n\nexport const EXPECTED_CONFIG_VERSION = 1;\nexport const defaultConfig: ConfigProto = { version: 1 };\n\n// TODO(burdon): Allow override via env? Generalize since currently NodeJS only.\nconst HOME = typeof process !== 'undefined' ? process?.env?.HOME ?? '' : '';\n\n// Base directories.\n// TODO(burdon): Consider Windows, Linux, OSX.\n// https://wiki.archlinux.org/title/XDG_Base_Directory\n// Each `/dx` directory should contain `/profile/<DX_PROFILE>` subdirectories.\nexport const getProfilePath = (root: string, profile: string, file: string | undefined = undefined) =>\n `${root}/profile/${profile}` + (file ? `/${file}` : '');\n\n// XDG_CONFIG_HOME (Analogous to /etc.)\nexport const DX_CONFIG = `${HOME}/.config/dx`;\n\n// XDG_CACHE_HOME (Analogous to /var/cache).\nexport const DX_CACHE = `${HOME}/.cache/dx`;\n\n// TODO(burdon): Storage should use this by default (make path optional).\n// XDG_DATA_HOME (Analogous to /usr/share).\nexport const DX_DATA = `${HOME}/.local/share/dx`;\n\n// XDG_STATE_HOME (Analogous to /var/lib).\nexport const DX_STATE = `${HOME}/.local/state/dx`;\n\n// XDG_RUNTIME_DIR (Non-essential files, sockets, etc.)\nexport const DX_RUNTIME = '/tmp/dx/run';\n\nexport const ENV_DX_CONFIG = 'DX_CONFIG';\nexport const ENV_DX_PROFILE = 'DX_PROFILE';\nexport const ENV_DX_PROFILE_DEFAULT = 'default';\n", "//\n// Copyright 2021 DXOS.org\n//\n\nimport type { MulticastObservable } from '@dxos/async';\nimport type { FilterSource, Query } from '@dxos/echo-schema';\nimport type { PublicKey } from '@dxos/keys';\nimport type { Invitation } from '@dxos/protocols/proto/dxos/client/services';\nimport type { QueryOptions } from '@dxos/protocols/proto/dxos/echo/filter';\n\nimport type { AuthenticatingInvitation } from './invitations';\nimport type { PropertiesProps } from './schema';\nimport type { Space } from './space';\n\n// Space properties key for default metadata.\n// TODO(wittjosiah): Remove. Default space should be indicated by data in HALO space.\nexport const defaultKey = '__DEFAULT__';\n\n/**\n * TODO(burdon): Public API (move comments here).\n */\n// TODO(wittjosiah): Rename?\n// https://ts.dev/style/#naming-style\n// ClientApi? ClientProtocol?\nexport interface Echo extends MulticastObservable<Space[]> {\n /**\n * Resolves when the default space is available.\n */\n // TODO(wittjosiah): Remove. Ensure default space is always available.\n get isReady(): MulticastObservable<boolean>;\n\n /**\n * Returns the list of spaces.\n */\n get(): Space[];\n\n /**\n * Returns the space with the given key.\n */\n get(spaceKey: PublicKey): Space | undefined;\n\n /**\n * Returns the default space.\n */\n get default(): Space;\n\n /**\n * Creates a new space.\n */\n create(meta?: PropertiesProps): Promise<Space>;\n\n /**\n * Creates a space from the given snapshot.\n */\n // clone(snapshot: SpaceSnapshot): Promise<Space>;\n\n /**\n * Joins an existing space using the given invitation.\n */\n join(invitation: Invitation | string): AuthenticatingInvitation;\n\n /**\n * Query all spaces.\n * @param filter\n * @param options\n */\n query<T extends {} = any>(filter?: FilterSource<T>, options?: QueryOptions): Query<T>;\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport base from 'base-x';\n\nimport { schema } from '@dxos/protocols';\nimport { Invitation } from '@dxos/protocols/proto/dxos/client/services';\n\n// Encode with URL-safe alpha-numeric characters.\nconst base62 = base('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');\n\nconst codec = schema.getCodecForType('dxos.client.services.Invitation');\n\n/**\n * Encodes and decodes an invitation proto into/from alphanumeric chars.\n */\nexport class InvitationEncoder {\n static decode(text: string): Invitation {\n const decodedInvitation = codec.decode(base62.decode(text));\n if (decodedInvitation.type === Invitation.Type.MULTIUSE) {\n decodedInvitation.type = Invitation.Type.INTERACTIVE;\n decodedInvitation.multiUse = true;\n }\n return decodedInvitation;\n }\n\n static encode(invitation: Invitation): string {\n return base62.encode(\n codec.encode({\n invitationId: invitation.invitationId,\n type: invitation.type,\n kind: invitation.kind,\n authMethod: invitation.authMethod,\n swarmKey: invitation.swarmKey,\n state: invitation.state,\n timeout: invitation.timeout,\n guestKeypair: invitation.guestKeypair,\n // TODO(wittjosiah): Make these optional to encode for greater privacy.\n ...(invitation.spaceKey ? { spaceKey: invitation.spaceKey } : {}),\n ...(invitation.target ? { target: invitation.target } : {}),\n }),\n );\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { MulticastObservable, type Observable, type Subscriber } from '@dxos/async';\nimport { invariant } from '@dxos/invariant';\nimport { Invitation } from '@dxos/protocols/proto/dxos/client/services';\n\nexport const AUTHENTICATION_CODE_LENGTH = 6;\n\nexport const INVITATION_TIMEOUT = 3 * 60_000; // 3 mins.\n\nexport interface Invitations {\n created: MulticastObservable<CancellableInvitation[]>;\n accepted: MulticastObservable<AuthenticatingInvitation[]>;\n share(options?: Partial<Invitation>): CancellableInvitation;\n join(invitation: Invitation): AuthenticatingInvitation;\n}\n\n/**\n * Base class for all invitation observables and providers.\n */\nexport class CancellableInvitation extends MulticastObservable<Invitation> {\n private readonly _onCancel: () => Promise<void>;\n\n constructor({\n subscriber,\n initialInvitation,\n onCancel,\n }: {\n subscriber: Observable<Invitation> | Subscriber<Invitation>;\n initialInvitation: Invitation;\n onCancel: () => Promise<void>;\n }) {\n super(subscriber, initialInvitation);\n this._onCancel = onCancel;\n }\n\n cancel(): Promise<void> {\n return this._onCancel();\n }\n\n get expired() {\n const invitation = this.get();\n return (\n invitation.created &&\n invitation.lifetime &&\n invitation.lifetime !== 0 &&\n invitation.created.getTime() + invitation.lifetime * 1000 < Date.now()\n );\n }\n\n get expiry() {\n const invitation = this.get();\n return invitation.created && invitation.lifetime && invitation.lifetime !== 0\n ? new Date(invitation.created.getTime() + invitation.lifetime * 1000)\n : undefined;\n }\n}\n\n/**\n * Cancelable observer that relays authentication requests.\n */\nexport class AuthenticatingInvitation extends CancellableInvitation {\n private readonly _onAuthenticate: (authCode: string) => Promise<void>;\n\n constructor({\n subscriber,\n initialInvitation,\n onCancel,\n onAuthenticate,\n }: {\n subscriber: Observable<Invitation> | Subscriber<Invitation>;\n initialInvitation: Invitation;\n onCancel: () => Promise<void>;\n onAuthenticate: (authCode: string) => Promise<void>;\n }) {\n super({ subscriber, initialInvitation, onCancel });\n this._onAuthenticate = onAuthenticate;\n }\n\n async authenticate(authCode: string): Promise<void> {\n return this._onAuthenticate(authCode);\n }\n}\n\n/**\n * Testing util to wrap non-authenticating observable with promise.\n * Don't use this in production code.\n * @deprecated\n */\n// TODO(wittjosiah): Move to testing.\nexport const wrapObservable = async (observable: CancellableInvitation): Promise<Invitation> => {\n return new Promise((resolve, reject) => {\n const subscription = observable.subscribe(\n (invitation: Invitation | undefined) => {\n // TODO(burdon): Throw error if auth requested.\n invariant(invitation?.state === Invitation.State.SUCCESS);\n subscription.unsubscribe();\n resolve(invitation);\n },\n (err: Error) => {\n subscription.unsubscribe();\n reject(err);\n },\n );\n });\n};\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { type Event } from '@dxos/async';\nimport { type Context } from '@dxos/context';\nimport { schema } from '@dxos/protocols';\nimport { type FunctionRegistryService } from '@dxos/protocols/proto/dxos/agent/functions';\nimport {\n type IndexService,\n type DevicesService,\n type IdentityService,\n type InvitationsService,\n type LoggingService,\n type NetworkService,\n type SpacesService,\n type SystemService,\n} from '@dxos/protocols/proto/dxos/client/services';\nimport { type DevtoolsHost } from '@dxos/protocols/proto/dxos/devtools/host';\nimport { type DataService } from '@dxos/protocols/proto/dxos/echo/service';\nimport type { AppService, ShellService, WorkerService } from '@dxos/protocols/proto/dxos/iframe';\nimport type { BridgeService } from '@dxos/protocols/proto/dxos/mesh/bridge';\nimport { type TracingService } from '@dxos/protocols/proto/dxos/tracing';\nimport { createServiceBundle, type ServiceBundle } from '@dxos/rpc';\n\n//\n// NOTE: Should contain client/proxy dependencies only.\n//\n\nexport type ClientServices = {\n SystemService: SystemService;\n NetworkService: NetworkService;\n LoggingService: LoggingService;\n\n IdentityService: IdentityService;\n InvitationsService: InvitationsService;\n IndexService: IndexService;\n DevicesService: DevicesService;\n SpacesService: SpacesService;\n DataService: DataService;\n\n FunctionRegistryService: FunctionRegistryService;\n\n // TODO(burdon): Deprecated.\n DevtoolsHost: DevtoolsHost;\n\n TracingService: TracingService;\n};\n\n/**\n * Provide access to client services definitions and service handler.\n */\nexport interface ClientServicesProvider {\n /**\n * The connection to the services provider was termintaed.\n *\n * This should fire if the services disconnect unexpectedly or during a client reset.\n */\n closed: Event<Error | undefined>;\n descriptors: ServiceBundle<ClientServices>;\n services: Partial<ClientServices>;\n\n open(ctx: Context): Promise<void>;\n close(ctx: Context): Promise<void>;\n}\n\n/**\n * Services supported by host.\n */\nexport const clientServiceBundle = createServiceBundle<ClientServices>({\n SystemService: schema.getService('dxos.client.services.SystemService'),\n NetworkService: schema.getService('dxos.client.services.NetworkService'),\n LoggingService: schema.getService('dxos.client.services.LoggingService'),\n\n IdentityService: schema.getService('dxos.client.services.IdentityService'),\n IndexService: schema.getService('dxos.client.services.IndexService'),\n InvitationsService: schema.getService('dxos.client.services.InvitationsService'),\n DevicesService: schema.getService('dxos.client.services.DevicesService'),\n SpacesService: schema.getService('dxos.client.services.SpacesService'),\n DataService: schema.getService('dxos.echo.service.DataService'),\n\n // Agent-only.\n FunctionRegistryService: schema.getService('dxos.agent.functions.FunctionRegistryService'),\n\n // TODO(burdon): Deprecated.\n DevtoolsHost: schema.getService('dxos.devtools.host.DevtoolsHost'),\n\n TracingService: schema.getService('dxos.tracing.TracingService'),\n});\n\nexport type IframeServiceBundle = {\n BridgeService: BridgeService;\n};\n\nexport const iframeServiceBundle: ServiceBundle<IframeServiceBundle> = {\n BridgeService: schema.getService('dxos.mesh.bridge.BridgeService'),\n};\n\nexport type WorkerServiceBundle = {\n WorkerService: WorkerService;\n};\n\nexport const workerServiceBundle: ServiceBundle<WorkerServiceBundle> = {\n WorkerService: schema.getService('dxos.iframe.WorkerService'),\n};\n\nexport type AppServiceBundle = {\n AppService: AppService;\n};\n\nexport const appServiceBundle: ServiceBundle<AppServiceBundle> = {\n AppService: schema.getService('dxos.iframe.AppService'),\n};\n\nexport type ShellServiceBundle = {\n ShellService: ShellService;\n};\n\nexport const shellServiceBundle: ServiceBundle<ShellServiceBundle> = {\n ShellService: schema.getService('dxos.iframe.ShellService'),\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\n/**\n * Timeout for making rpc connections from remote proxies.\n */\nexport const PROXY_CONNECTION_TIMEOUT = 30_000;\n\n/**\n * Timeout for the device to be added to the trusted set during auth.\n */\nexport const AUTH_TIMEOUT = 30_000;\n\n/**\n * Timeout for how long the remote client will wait before assuming the connection is lost.\n */\nexport const STATUS_TIMEOUT = 10_000;\n\n/**\n * Timeout for waiting before stealing resource lock.\n */\nexport const RESOURCE_LOCK_TIMEOUT = 3_000;\n\n/**\n * Timeout for space properties to be loaded in the set of tracked items.\n * Accounts for latency between SpaceService reporting the space as READY and DataService streaming the item states.\n */\nexport const LOAD_PROPERTIES_TIMEOUT = 3_000;\n\n/**\n * Timeout for creating new spaces.\n */\nexport const CREATE_SPACE_TIMEOUT = 5_000;\n\n/**\n * Timeout for loading of control feeds.\n */\nexport const LOAD_CONTROL_FEEDS_TIMEOUT = 3_000;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { echoObject, S } from '@dxos/echo-schema';\n\nconst _Properties = S.struct({ name: S.optional(S.string) }, { key: S.string, value: S.any }).pipe(\n echoObject('dxos.sdk.client.Properties', '0.1.0'),\n);\nexport interface Properties extends S.Schema.Type<typeof _Properties> {}\nexport const Properties = _Properties;\n\nexport type PropertiesProps = {\n name?: string;\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["DEFAULT_INTERNAL_CHANNEL", "DEFAULT_CLIENT_CHANNEL", "DEFAULT_SHELL_CHANNEL", "DEFAULT_VAULT_ORIGIN", "DEFAULT_VAULT_URL", "EXPECTED_CONFIG_VERSION", "defaultConfig", "version", "HOME", "process", "env", "getProfilePath", "root", "profile", "file", "undefined", "DX_CONFIG", "DX_CACHE", "DX_DATA", "DX_STATE", "DX_RUNTIME", "ENV_DX_CONFIG", "ENV_DX_PROFILE", "ENV_DX_PROFILE_DEFAULT", "defaultKey", "base", "schema", "Invitation", "base62", "base", "codec", "schema", "getCodecForType", "InvitationEncoder", "decode", "text", "decodedInvitation", "type", "Invitation", "Type", "MULTIUSE", "INTERACTIVE", "multiUse", "encode", "invitation", "invitationId", "kind", "authMethod", "swarmKey", "state", "timeout", "guestKeypair", "spaceKey", "target", "MulticastObservable", "invariant", "Invitation", "AUTHENTICATION_CODE_LENGTH", "INVITATION_TIMEOUT", "CancellableInvitation", "constructor", "subscriber", "initialInvitation", "onCancel", "_onCancel", "cancel", "expired", "invitation", "get", "created", "lifetime", "getTime", "Date", "now", "expiry", "undefined", "AuthenticatingInvitation", "onAuthenticate", "_onAuthenticate", "authenticate", "authCode", "wrapObservable", "observable", "Promise", "resolve", "reject", "subscription", "subscribe", "state", "State", "SUCCESS", "unsubscribe", "err", "schema", "createServiceBundle", "clientServiceBundle", "createServiceBundle", "SystemService", "schema", "getService", "NetworkService", "LoggingService", "IdentityService", "IndexService", "InvitationsService", "DevicesService", "SpacesService", "DataService", "FunctionRegistryService", "DevtoolsHost", "TracingService", "iframeServiceBundle", "BridgeService", "workerServiceBundle", "WorkerService", "appServiceBundle", "AppService", "shellServiceBundle", "ShellService", "PROXY_CONNECTION_TIMEOUT", "AUTH_TIMEOUT", "STATUS_TIMEOUT", "RESOURCE_LOCK_TIMEOUT", "LOAD_PROPERTIES_TIMEOUT", "CREATE_SPACE_TIMEOUT", "LOAD_CONTROL_FEEDS_TIMEOUT", "echoObject", "S", "_Properties", "S", "struct", "name", "optional", "string", "key", "value", "any", "pipe", "echoObject", "Properties"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/sdk/client-protocol/src/config.ts":{"bytes":5856,"imports":[],"format":"esm"},"packages/sdk/client-protocol/src/echo.ts":{"bytes":
|
|
1
|
+
{"inputs":{"packages/sdk/client-protocol/src/config.ts":{"bytes":5856,"imports":[],"format":"esm"},"packages/sdk/client-protocol/src/echo.ts":{"bytes":3104,"imports":[],"format":"esm"},"packages/sdk/client-protocol/src/halo.ts":{"bytes":2737,"imports":[],"format":"esm"},"packages/sdk/client-protocol/src/invitations/encoder.ts":{"bytes":5401,"imports":[{"path":"base-x","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/client-protocol/src/invitations/invitations.ts":{"bytes":9484,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/client-protocol/src/invitations/index.ts":{"bytes":578,"imports":[{"path":"packages/sdk/client-protocol/src/invitations/encoder.ts","kind":"import-statement","original":"./encoder"},{"path":"packages/sdk/client-protocol/src/invitations/invitations.ts","kind":"import-statement","original":"./invitations"}],"format":"esm"},"packages/sdk/client-protocol/src/service-definitions.ts":{"bytes":8910,"imports":[{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/client-protocol/src/shell.ts":{"bytes":1064,"imports":[],"format":"esm"},"packages/sdk/client-protocol/src/space.ts":{"bytes":4027,"imports":[],"format":"esm"},"packages/sdk/client-protocol/src/timeouts.ts":{"bytes":3134,"imports":[],"format":"esm"},"packages/sdk/client-protocol/src/schema.ts":{"bytes":1602,"imports":[{"path":"@dxos/echo-schema","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/client-protocol/src/index.ts":{"bytes":1368,"imports":[{"path":"packages/sdk/client-protocol/src/config.ts","kind":"import-statement","original":"./config"},{"path":"packages/sdk/client-protocol/src/echo.ts","kind":"import-statement","original":"./echo"},{"path":"packages/sdk/client-protocol/src/halo.ts","kind":"import-statement","original":"./halo"},{"path":"packages/sdk/client-protocol/src/invitations/index.ts","kind":"import-statement","original":"./invitations"},{"path":"packages/sdk/client-protocol/src/service-definitions.ts","kind":"import-statement","original":"./service-definitions"},{"path":"packages/sdk/client-protocol/src/shell.ts","kind":"import-statement","original":"./shell"},{"path":"packages/sdk/client-protocol/src/space.ts","kind":"import-statement","original":"./space"},{"path":"packages/sdk/client-protocol/src/timeouts.ts","kind":"import-statement","original":"./timeouts"},{"path":"packages/sdk/client-protocol/src/schema.ts","kind":"import-statement","original":"./schema"}],"format":"esm"}},"outputs":{"packages/sdk/client-protocol/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":19501},"packages/sdk/client-protocol/dist/lib/browser/index.mjs":{"imports":[{"path":"base-x","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true}],"exports":["AUTHENTICATION_CODE_LENGTH","AUTH_TIMEOUT","AuthenticatingInvitation","CREATE_SPACE_TIMEOUT","CancellableInvitation","DEFAULT_CLIENT_CHANNEL","DEFAULT_INTERNAL_CHANNEL","DEFAULT_SHELL_CHANNEL","DEFAULT_VAULT_ORIGIN","DEFAULT_VAULT_URL","DX_CACHE","DX_CONFIG","DX_DATA","DX_RUNTIME","DX_STATE","ENV_DX_CONFIG","ENV_DX_PROFILE","ENV_DX_PROFILE_DEFAULT","EXPECTED_CONFIG_VERSION","INVITATION_TIMEOUT","InvitationEncoder","LOAD_CONTROL_FEEDS_TIMEOUT","LOAD_PROPERTIES_TIMEOUT","PROXY_CONNECTION_TIMEOUT","Properties","RESOURCE_LOCK_TIMEOUT","STATUS_TIMEOUT","appServiceBundle","clientServiceBundle","defaultConfig","defaultKey","getProfilePath","iframeServiceBundle","shellServiceBundle","workerServiceBundle","wrapObservable"],"entryPoint":"packages/sdk/client-protocol/src/index.ts","inputs":{"packages/sdk/client-protocol/src/config.ts":{"bytesInOutput":797},"packages/sdk/client-protocol/src/index.ts":{"bytesInOutput":0},"packages/sdk/client-protocol/src/echo.ts":{"bytesInOutput":32},"packages/sdk/client-protocol/src/invitations/encoder.ts":{"bytesInOutput":1242},"packages/sdk/client-protocol/src/invitations/index.ts":{"bytesInOutput":0},"packages/sdk/client-protocol/src/invitations/invitations.ts":{"bytesInOutput":1941},"packages/sdk/client-protocol/src/service-definitions.ts":{"bytesInOutput":1499},"packages/sdk/client-protocol/src/timeouts.ts":{"bytesInOutput":224},"packages/sdk/client-protocol/src/schema.ts":{"bytesInOutput":236}},"bytes":7148}}}
|
package/dist/lib/node/index.cjs
CHANGED
|
@@ -53,7 +53,6 @@ __export(node_exports, {
|
|
|
53
53
|
LOAD_PROPERTIES_TIMEOUT: () => LOAD_PROPERTIES_TIMEOUT,
|
|
54
54
|
PROXY_CONNECTION_TIMEOUT: () => PROXY_CONNECTION_TIMEOUT,
|
|
55
55
|
Properties: () => Properties,
|
|
56
|
-
PropertiesSchema: () => PropertiesSchema,
|
|
57
56
|
RESOURCE_LOCK_TIMEOUT: () => RESOURCE_LOCK_TIMEOUT,
|
|
58
57
|
STATUS_TIMEOUT: () => STATUS_TIMEOUT,
|
|
59
58
|
appServiceBundle: () => appServiceBundle,
|
|
@@ -63,21 +62,19 @@ __export(node_exports, {
|
|
|
63
62
|
getProfilePath: () => getProfilePath,
|
|
64
63
|
iframeServiceBundle: () => iframeServiceBundle,
|
|
65
64
|
shellServiceBundle: () => shellServiceBundle,
|
|
66
|
-
types: () => types,
|
|
67
65
|
workerServiceBundle: () => workerServiceBundle,
|
|
68
66
|
wrapObservable: () => wrapObservable
|
|
69
67
|
});
|
|
70
68
|
module.exports = __toCommonJS(node_exports);
|
|
71
69
|
var import_base_x = __toESM(require("base-x"));
|
|
72
70
|
var import_protocols = require("@dxos/protocols");
|
|
71
|
+
var import_services = require("@dxos/protocols/proto/dxos/client/services");
|
|
73
72
|
var import_async = require("@dxos/async");
|
|
74
73
|
var import_invariant = require("@dxos/invariant");
|
|
75
|
-
var
|
|
76
|
-
var dxos_echo_schema = __toESM(require("@dxos/echo-schema"));
|
|
74
|
+
var import_services2 = require("@dxos/protocols/proto/dxos/client/services");
|
|
77
75
|
var import_protocols2 = require("@dxos/protocols");
|
|
78
76
|
var import_rpc = require("@dxos/rpc");
|
|
79
|
-
var
|
|
80
|
-
var E = __toESM(require("@dxos/echo-schema"));
|
|
77
|
+
var import_echo_schema = require("@dxos/echo-schema");
|
|
81
78
|
var DEFAULT_INTERNAL_CHANNEL = "dxos:vault";
|
|
82
79
|
var DEFAULT_CLIENT_CHANNEL = "dxos:app";
|
|
83
80
|
var DEFAULT_SHELL_CHANNEL = "dxos:shell";
|
|
@@ -102,7 +99,12 @@ var base62 = (0, import_base_x.default)("0123456789abcdefghijklmnopqrstuvwxyzABC
|
|
|
102
99
|
var codec = import_protocols.schema.getCodecForType("dxos.client.services.Invitation");
|
|
103
100
|
var InvitationEncoder = class {
|
|
104
101
|
static decode(text) {
|
|
105
|
-
|
|
102
|
+
const decodedInvitation = codec.decode(base62.decode(text));
|
|
103
|
+
if (decodedInvitation.type === import_services.Invitation.Type.MULTIUSE) {
|
|
104
|
+
decodedInvitation.type = import_services.Invitation.Type.INTERACTIVE;
|
|
105
|
+
decodedInvitation.multiUse = true;
|
|
106
|
+
}
|
|
107
|
+
return decodedInvitation;
|
|
106
108
|
}
|
|
107
109
|
static encode(invitation) {
|
|
108
110
|
return base62.encode(codec.encode({
|
|
@@ -113,6 +115,7 @@ var InvitationEncoder = class {
|
|
|
113
115
|
swarmKey: invitation.swarmKey,
|
|
114
116
|
state: invitation.state,
|
|
115
117
|
timeout: invitation.timeout,
|
|
118
|
+
guestKeypair: invitation.guestKeypair,
|
|
116
119
|
// TODO(wittjosiah): Make these optional to encode for greater privacy.
|
|
117
120
|
...invitation.spaceKey ? {
|
|
118
121
|
spaceKey: invitation.spaceKey
|
|
@@ -159,7 +162,7 @@ var AuthenticatingInvitation = class extends CancellableInvitation {
|
|
|
159
162
|
var wrapObservable = async (observable) => {
|
|
160
163
|
return new Promise((resolve, reject) => {
|
|
161
164
|
const subscription = observable.subscribe((invitation) => {
|
|
162
|
-
(0, import_invariant.invariant)(invitation?.state ===
|
|
165
|
+
(0, import_invariant.invariant)(invitation?.state === import_services2.Invitation.State.SUCCESS, void 0, {
|
|
163
166
|
F: __dxlog_file,
|
|
164
167
|
L: 98,
|
|
165
168
|
S: void 0,
|
|
@@ -176,31 +179,6 @@ var wrapObservable = async (observable) => {
|
|
|
176
179
|
});
|
|
177
180
|
});
|
|
178
181
|
};
|
|
179
|
-
var types = new dxos_echo_schema.TypeCollection();
|
|
180
|
-
var Properties = class _Properties extends dxos_echo_schema.TypedObject {
|
|
181
|
-
static filter(filter) {
|
|
182
|
-
return dxos_echo_schema.Filter.typename("dxos.sdk.client.Properties", filter);
|
|
183
|
-
}
|
|
184
|
-
constructor(initValues, opts) {
|
|
185
|
-
super({
|
|
186
|
-
...initValues
|
|
187
|
-
}, {
|
|
188
|
-
schema: _Properties.schema,
|
|
189
|
-
...opts
|
|
190
|
-
});
|
|
191
|
-
}
|
|
192
|
-
};
|
|
193
|
-
types.registerPrototype(Properties, {
|
|
194
|
-
typename: "dxos.sdk.client.Properties",
|
|
195
|
-
props: [
|
|
196
|
-
{
|
|
197
|
-
id: "name",
|
|
198
|
-
type: 1,
|
|
199
|
-
repeated: false
|
|
200
|
-
}
|
|
201
|
-
]
|
|
202
|
-
});
|
|
203
|
-
types.link();
|
|
204
182
|
var clientServiceBundle = (0, import_rpc.createServiceBundle)({
|
|
205
183
|
SystemService: import_protocols2.schema.getService("dxos.client.services.SystemService"),
|
|
206
184
|
NetworkService: import_protocols2.schema.getService("dxos.client.services.NetworkService"),
|
|
@@ -236,13 +214,13 @@ var RESOURCE_LOCK_TIMEOUT = 3e3;
|
|
|
236
214
|
var LOAD_PROPERTIES_TIMEOUT = 3e3;
|
|
237
215
|
var CREATE_SPACE_TIMEOUT = 5e3;
|
|
238
216
|
var LOAD_CONTROL_FEEDS_TIMEOUT = 3e3;
|
|
239
|
-
var
|
|
240
|
-
name: S.optional(S.string)
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
217
|
+
var _Properties = import_echo_schema.S.struct({
|
|
218
|
+
name: import_echo_schema.S.optional(import_echo_schema.S.string)
|
|
219
|
+
}, {
|
|
220
|
+
key: import_echo_schema.S.string,
|
|
221
|
+
value: import_echo_schema.S.any
|
|
222
|
+
}).pipe((0, import_echo_schema.echoObject)("dxos.sdk.client.Properties", "0.1.0"));
|
|
223
|
+
var Properties = _Properties;
|
|
246
224
|
// Annotate the CommonJS export names for ESM import in node:
|
|
247
225
|
0 && (module.exports = {
|
|
248
226
|
AUTHENTICATION_CODE_LENGTH,
|
|
@@ -270,7 +248,6 @@ var PropertiesSchema = S.struct({
|
|
|
270
248
|
LOAD_PROPERTIES_TIMEOUT,
|
|
271
249
|
PROXY_CONNECTION_TIMEOUT,
|
|
272
250
|
Properties,
|
|
273
|
-
PropertiesSchema,
|
|
274
251
|
RESOURCE_LOCK_TIMEOUT,
|
|
275
252
|
STATUS_TIMEOUT,
|
|
276
253
|
appServiceBundle,
|
|
@@ -280,7 +257,6 @@ var PropertiesSchema = S.struct({
|
|
|
280
257
|
getProfilePath,
|
|
281
258
|
iframeServiceBundle,
|
|
282
259
|
shellServiceBundle,
|
|
283
|
-
types,
|
|
284
260
|
workerServiceBundle,
|
|
285
261
|
wrapObservable
|
|
286
262
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../src/config.ts", "../../../src/echo.ts", "../../../src/invitations/encoder.ts", "../../../src/invitations/invitations.ts", "../../../src/
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { type ConfigProto } from '@dxos/config';\n\nexport const DEFAULT_INTERNAL_CHANNEL = 'dxos:vault';\nexport const DEFAULT_CLIENT_CHANNEL = 'dxos:app';\nexport const DEFAULT_SHELL_CHANNEL = 'dxos:shell';\n\nexport const DEFAULT_VAULT_ORIGIN = 'https://halo.dxos.org';\nexport const DEFAULT_VAULT_URL = DEFAULT_VAULT_ORIGIN + '/vault.html';\n\nexport const EXPECTED_CONFIG_VERSION = 1;\nexport const defaultConfig: ConfigProto = { version: 1 };\n\n// TODO(burdon): Allow override via env? Generalize since currently NodeJS only.\nconst HOME = typeof process !== 'undefined' ? process?.env?.HOME ?? '' : '';\n\n// Base directories.\n// TODO(burdon): Consider Windows, Linux, OSX.\n// https://wiki.archlinux.org/title/XDG_Base_Directory\n// Each `/dx` directory should contain `/profile/<DX_PROFILE>` subdirectories.\nexport const getProfilePath = (root: string, profile: string, file: string | undefined = undefined) =>\n `${root}/profile/${profile}` + (file ? `/${file}` : '');\n\n// XDG_CONFIG_HOME (Analogous to /etc.)\nexport const DX_CONFIG = `${HOME}/.config/dx`;\n\n// XDG_CACHE_HOME (Analogous to /var/cache).\nexport const DX_CACHE = `${HOME}/.cache/dx`;\n\n// TODO(burdon): Storage should use this by default (make path optional).\n// XDG_DATA_HOME (Analogous to /usr/share).\nexport const DX_DATA = `${HOME}/.local/share/dx`;\n\n// XDG_STATE_HOME (Analogous to /var/lib).\nexport const DX_STATE = `${HOME}/.local/state/dx`;\n\n// XDG_RUNTIME_DIR (Non-essential files, sockets, etc.)\nexport const DX_RUNTIME = '/tmp/dx/run';\n\nexport const ENV_DX_CONFIG = 'DX_CONFIG';\nexport const ENV_DX_PROFILE = 'DX_PROFILE';\nexport const ENV_DX_PROFILE_DEFAULT = 'default';\n", "//\n// Copyright 2021 DXOS.org\n//\n\nimport type { MulticastObservable } from '@dxos/async';\nimport type { TypeCollection } from '@dxos/echo-schema';\nimport type { PublicKey } from '@dxos/keys';\nimport type { Invitation } from '@dxos/protocols/proto/dxos/client/services';\n\nimport type { AuthenticatingInvitation } from './invitations';\nimport type { Space } from './space';\n\n// Space properties key for default metadata.\n// TODO(wittjosiah): Remove. Default space should be indicated by data in HALO space.\nexport const defaultKey = '__DEFAULT__';\n\n/**\n * TODO(burdon): Public API (move comments here).\n */\n// TODO(wittjosiah): Rename?\n// https://ts.dev/style/#naming-style\n// ClientApi? ClientProtocol?\nexport interface Echo extends MulticastObservable<Space[]> {\n /**\n * Resolves when the default space is available.\n */\n // TODO(wittjosiah): Remove. Ensure default space is always available.\n get isReady(): MulticastObservable<boolean>;\n\n /**\n * Returns the list of spaces.\n */\n get(): Space[];\n\n /**\n * Returns the space with the given key.\n */\n get(spaceKey: PublicKey): Space | undefined;\n\n /**\n * Returns the default space.\n */\n get default(): Space;\n\n /**\n * Creates a new space.\n */\n create(): Promise<Space>;\n\n /**\n * Creates a space from the given snapshot.\n */\n // clone(snapshot: SpaceSnapshot): Promise<Space>;\n\n /**\n * Joins an existing space using the given invitation.\n */\n join(invitation: Invitation | string): AuthenticatingInvitation;\n\n /**\n * Adds a schema to ECHO.\n */\n // TODO(dmaretskyi): Rename `addTypes`.\n addSchema(schema: TypeCollection): void;\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport base from 'base-x';\n\nimport { schema } from '@dxos/protocols';\nimport { type Invitation } from '@dxos/protocols/proto/dxos/client/services';\n\n// Encode with URL-safe alpha-numeric characters.\nconst base62 = base('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');\n\nconst codec = schema.getCodecForType('dxos.client.services.Invitation');\n\n/**\n * Encodes and decodes an invitation proto into/from alphanumeric chars.\n */\nexport class InvitationEncoder {\n static decode(text: string): Invitation {\n return codec.decode(base62.decode(text));\n }\n\n static encode(invitation: Invitation): string {\n return base62.encode(\n codec.encode({\n invitationId: invitation.invitationId,\n type: invitation.type,\n kind: invitation.kind,\n authMethod: invitation.authMethod,\n swarmKey: invitation.swarmKey,\n state: invitation.state,\n timeout: invitation.timeout,\n // TODO(wittjosiah): Make these optional to encode for greater privacy.\n ...(invitation.spaceKey ? { spaceKey: invitation.spaceKey } : {}),\n ...(invitation.target ? { target: invitation.target } : {}),\n }),\n );\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { MulticastObservable, type Observable, type Subscriber } from '@dxos/async';\nimport { invariant } from '@dxos/invariant';\nimport { Invitation } from '@dxos/protocols/proto/dxos/client/services';\n\nexport const AUTHENTICATION_CODE_LENGTH = 6;\n\nexport const INVITATION_TIMEOUT = 3 * 60_000; // 3 mins.\n\nexport interface Invitations {\n created: MulticastObservable<CancellableInvitation[]>;\n accepted: MulticastObservable<AuthenticatingInvitation[]>;\n share(options?: Partial<Invitation>): CancellableInvitation;\n join(invitation: Invitation): AuthenticatingInvitation;\n}\n\n/**\n * Base class for all invitation observables and providers.\n */\nexport class CancellableInvitation extends MulticastObservable<Invitation> {\n private readonly _onCancel: () => Promise<void>;\n\n constructor({\n subscriber,\n initialInvitation,\n onCancel,\n }: {\n subscriber: Observable<Invitation> | Subscriber<Invitation>;\n initialInvitation: Invitation;\n onCancel: () => Promise<void>;\n }) {\n super(subscriber, initialInvitation);\n this._onCancel = onCancel;\n }\n\n cancel(): Promise<void> {\n return this._onCancel();\n }\n\n get expired() {\n const invitation = this.get();\n return (\n invitation.created &&\n invitation.lifetime &&\n invitation.lifetime !== 0 &&\n invitation.created.getTime() + invitation.lifetime * 1000 < Date.now()\n );\n }\n\n get expiry() {\n const invitation = this.get();\n return invitation.created && invitation.lifetime && invitation.lifetime !== 0\n ? new Date(invitation.created.getTime() + invitation.lifetime * 1000)\n : undefined;\n }\n}\n\n/**\n * Cancelable observer that relays authentication requests.\n */\nexport class AuthenticatingInvitation extends CancellableInvitation {\n private readonly _onAuthenticate: (authCode: string) => Promise<void>;\n\n constructor({\n subscriber,\n initialInvitation,\n onCancel,\n onAuthenticate,\n }: {\n subscriber: Observable<Invitation> | Subscriber<Invitation>;\n initialInvitation: Invitation;\n onCancel: () => Promise<void>;\n onAuthenticate: (authCode: string) => Promise<void>;\n }) {\n super({ subscriber, initialInvitation, onCancel });\n this._onAuthenticate = onAuthenticate;\n }\n\n async authenticate(authCode: string): Promise<void> {\n return this._onAuthenticate(authCode);\n }\n}\n\n/**\n * Testing util to wrap non-authenticating observable with promise.\n * Don't use this in production code.\n * @deprecated\n */\n// TODO(wittjosiah): Move to testing.\nexport const wrapObservable = async (observable: CancellableInvitation): Promise<Invitation> => {\n return new Promise((resolve, reject) => {\n const subscription = observable.subscribe(\n (invitation: Invitation | undefined) => {\n // TODO(burdon): Throw error if auth requested.\n invariant(invitation?.state === Invitation.State.SUCCESS);\n subscription.unsubscribe();\n resolve(invitation);\n },\n (err: Error) => {\n subscription.unsubscribe();\n reject(err);\n },\n );\n });\n};\n", "/**\n * @generated @dxos/echo-typegen src/proto/schema.proto\n **/\n\nimport * as dxos_echo_schema from \"@dxos/echo-schema\";\n\nexport const types = new dxos_echo_schema.TypeCollection();\n\nexport type PropertiesProps = {\n name: string;\n};\n\nexport class Properties extends dxos_echo_schema.TypedObject<PropertiesProps> {\n declare static readonly schema: dxos_echo_schema.Schema;\n\n static filter(\n filter?:\n | Partial<PropertiesProps>\n | dxos_echo_schema.OperatorFilter<Properties>,\n ): dxos_echo_schema.Filter<Properties> {\n return dxos_echo_schema.Filter.typename(\n \"dxos.sdk.client.Properties\",\n filter,\n );\n }\n\n constructor(\n initValues?: Partial<PropertiesProps>,\n opts?: dxos_echo_schema.TypedObjectOptions,\n ) {\n super({ ...initValues }, { schema: Properties.schema, ...opts });\n }\n declare name: string;\n}\n\ntypes.registerPrototype(Properties, {\n typename: \"dxos.sdk.client.Properties\",\n props: [{ id: \"name\", type: 1, repeated: false }],\n});\n\ntypes.link();\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { type Event } from '@dxos/async';\nimport { type Context } from '@dxos/context';\nimport { schema } from '@dxos/protocols';\nimport { type FunctionRegistryService } from '@dxos/protocols/proto/dxos/agent/functions';\nimport {\n type IndexService,\n type DevicesService,\n type IdentityService,\n type InvitationsService,\n type LoggingService,\n type NetworkService,\n type SpacesService,\n type SystemService,\n} from '@dxos/protocols/proto/dxos/client/services';\nimport { type DevtoolsHost } from '@dxos/protocols/proto/dxos/devtools/host';\nimport { type DataService } from '@dxos/protocols/proto/dxos/echo/service';\nimport type { AppService, ShellService, WorkerService } from '@dxos/protocols/proto/dxos/iframe';\nimport type { BridgeService } from '@dxos/protocols/proto/dxos/mesh/bridge';\nimport { type TracingService } from '@dxos/protocols/proto/dxos/tracing';\nimport { createServiceBundle, type ServiceBundle } from '@dxos/rpc';\n\n//\n// NOTE: Should contain client/proxy dependencies only.\n//\n\nexport type ClientServices = {\n SystemService: SystemService;\n NetworkService: NetworkService;\n LoggingService: LoggingService;\n\n IdentityService: IdentityService;\n InvitationsService: InvitationsService;\n IndexService: IndexService;\n DevicesService: DevicesService;\n SpacesService: SpacesService;\n DataService: DataService;\n\n FunctionRegistryService: FunctionRegistryService;\n\n // TODO(burdon): Deprecated.\n DevtoolsHost: DevtoolsHost;\n\n TracingService: TracingService;\n};\n\n/**\n * Provide access to client services definitions and service handler.\n */\nexport interface ClientServicesProvider {\n /**\n * The connection to the services provider was termintaed.\n *\n * This should fire if the services disconnect unexpectedly or during a client reset.\n */\n closed: Event<Error | undefined>;\n descriptors: ServiceBundle<ClientServices>;\n services: Partial<ClientServices>;\n\n open(ctx: Context): Promise<void>;\n close(ctx: Context): Promise<void>;\n}\n\n/**\n * Services supported by host.\n */\nexport const clientServiceBundle = createServiceBundle<ClientServices>({\n SystemService: schema.getService('dxos.client.services.SystemService'),\n NetworkService: schema.getService('dxos.client.services.NetworkService'),\n LoggingService: schema.getService('dxos.client.services.LoggingService'),\n\n IdentityService: schema.getService('dxos.client.services.IdentityService'),\n IndexService: schema.getService('dxos.client.services.IndexService'),\n InvitationsService: schema.getService('dxos.client.services.InvitationsService'),\n DevicesService: schema.getService('dxos.client.services.DevicesService'),\n SpacesService: schema.getService('dxos.client.services.SpacesService'),\n DataService: schema.getService('dxos.echo.service.DataService'),\n\n // Agent-only.\n FunctionRegistryService: schema.getService('dxos.agent.functions.FunctionRegistryService'),\n\n // TODO(burdon): Deprecated.\n DevtoolsHost: schema.getService('dxos.devtools.host.DevtoolsHost'),\n\n TracingService: schema.getService('dxos.tracing.TracingService'),\n});\n\nexport type IframeServiceBundle = {\n BridgeService: BridgeService;\n};\n\nexport const iframeServiceBundle: ServiceBundle<IframeServiceBundle> = {\n BridgeService: schema.getService('dxos.mesh.bridge.BridgeService'),\n};\n\nexport type WorkerServiceBundle = {\n WorkerService: WorkerService;\n};\n\nexport const workerServiceBundle: ServiceBundle<WorkerServiceBundle> = {\n WorkerService: schema.getService('dxos.iframe.WorkerService'),\n};\n\nexport type AppServiceBundle = {\n AppService: AppService;\n};\n\nexport const appServiceBundle: ServiceBundle<AppServiceBundle> = {\n AppService: schema.getService('dxos.iframe.AppService'),\n};\n\nexport type ShellServiceBundle = {\n ShellService: ShellService;\n};\n\nexport const shellServiceBundle: ServiceBundle<ShellServiceBundle> = {\n ShellService: schema.getService('dxos.iframe.ShellService'),\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\n/**\n * Timeout for making rpc connections from remote proxies.\n */\nexport const PROXY_CONNECTION_TIMEOUT = 30_000;\n\n/**\n * Timeout for the device to be added to the trusted set during auth.\n */\nexport const AUTH_TIMEOUT = 30_000;\n\n/**\n * Timeout for how long the remote client will wait before assuming the connection is lost.\n */\nexport const STATUS_TIMEOUT = 10_000;\n\n/**\n * Timeout for waiting before stealing resource lock.\n */\nexport const RESOURCE_LOCK_TIMEOUT = 3_000;\n\n/**\n * Timeout for space properties to be loaded in the set of tracked items.\n * Accounts for latency between SpaceService reporting the space as READY and DataService streaming the item states.\n */\nexport const LOAD_PROPERTIES_TIMEOUT = 3_000;\n\n/**\n * Timeout for creating new spaces.\n */\nexport const CREATE_SPACE_TIMEOUT = 5_000;\n\n/**\n * Timeout for loading of control feeds.\n */\nexport const LOAD_CONTROL_FEEDS_TIMEOUT = 3_000;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as S from '@effect/schema/Schema';\n\nimport * as E from '@dxos/echo-schema';\n\nexport const PropertiesSchema = S.struct({\n name: S.optional(S.string),\n // TODO(dmaretskyi): Remove.\n 'composer.dxos.org.opened': S.optional(S.number),\n 'composer.dxos.org.version': S.optional(S.union(S.string, S.number)),\n 'braneframe.Folder': S.optional(E.ref(E.AnyEchoObject)),\n}).pipe(E.echoObject('dxos.sdk.client.Properties', '0.1.0'));\n"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["import_protocols", "DEFAULT_INTERNAL_CHANNEL", "DEFAULT_CLIENT_CHANNEL", "DEFAULT_SHELL_CHANNEL", "DEFAULT_VAULT_ORIGIN", "DEFAULT_VAULT_URL", "EXPECTED_CONFIG_VERSION", "defaultConfig", "version", "HOME", "process", "env", "getProfilePath", "root", "profile", "file", "undefined", "DX_CONFIG", "DX_CACHE", "DX_DATA", "DX_STATE", "DX_RUNTIME", "ENV_DX_CONFIG", "ENV_DX_PROFILE", "ENV_DX_PROFILE_DEFAULT", "defaultKey", "base62", "base", "codec", "schema", "getCodecForType", "InvitationEncoder", "decode", "text", "
|
|
3
|
+
"sources": ["../../../src/config.ts", "../../../src/echo.ts", "../../../src/invitations/encoder.ts", "../../../src/invitations/invitations.ts", "../../../src/service-definitions.ts", "../../../src/timeouts.ts", "../../../src/schema.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { type ConfigProto } from '@dxos/config';\n\nexport const DEFAULT_INTERNAL_CHANNEL = 'dxos:vault';\nexport const DEFAULT_CLIENT_CHANNEL = 'dxos:app';\nexport const DEFAULT_SHELL_CHANNEL = 'dxos:shell';\n\nexport const DEFAULT_VAULT_ORIGIN = 'https://halo.dxos.org';\nexport const DEFAULT_VAULT_URL = DEFAULT_VAULT_ORIGIN + '/vault.html';\n\nexport const EXPECTED_CONFIG_VERSION = 1;\nexport const defaultConfig: ConfigProto = { version: 1 };\n\n// TODO(burdon): Allow override via env? Generalize since currently NodeJS only.\nconst HOME = typeof process !== 'undefined' ? process?.env?.HOME ?? '' : '';\n\n// Base directories.\n// TODO(burdon): Consider Windows, Linux, OSX.\n// https://wiki.archlinux.org/title/XDG_Base_Directory\n// Each `/dx` directory should contain `/profile/<DX_PROFILE>` subdirectories.\nexport const getProfilePath = (root: string, profile: string, file: string | undefined = undefined) =>\n `${root}/profile/${profile}` + (file ? `/${file}` : '');\n\n// XDG_CONFIG_HOME (Analogous to /etc.)\nexport const DX_CONFIG = `${HOME}/.config/dx`;\n\n// XDG_CACHE_HOME (Analogous to /var/cache).\nexport const DX_CACHE = `${HOME}/.cache/dx`;\n\n// TODO(burdon): Storage should use this by default (make path optional).\n// XDG_DATA_HOME (Analogous to /usr/share).\nexport const DX_DATA = `${HOME}/.local/share/dx`;\n\n// XDG_STATE_HOME (Analogous to /var/lib).\nexport const DX_STATE = `${HOME}/.local/state/dx`;\n\n// XDG_RUNTIME_DIR (Non-essential files, sockets, etc.)\nexport const DX_RUNTIME = '/tmp/dx/run';\n\nexport const ENV_DX_CONFIG = 'DX_CONFIG';\nexport const ENV_DX_PROFILE = 'DX_PROFILE';\nexport const ENV_DX_PROFILE_DEFAULT = 'default';\n", "//\n// Copyright 2021 DXOS.org\n//\n\nimport type { MulticastObservable } from '@dxos/async';\nimport type { FilterSource, Query } from '@dxos/echo-schema';\nimport type { PublicKey } from '@dxos/keys';\nimport type { Invitation } from '@dxos/protocols/proto/dxos/client/services';\nimport type { QueryOptions } from '@dxos/protocols/proto/dxos/echo/filter';\n\nimport type { AuthenticatingInvitation } from './invitations';\nimport type { PropertiesProps } from './schema';\nimport type { Space } from './space';\n\n// Space properties key for default metadata.\n// TODO(wittjosiah): Remove. Default space should be indicated by data in HALO space.\nexport const defaultKey = '__DEFAULT__';\n\n/**\n * TODO(burdon): Public API (move comments here).\n */\n// TODO(wittjosiah): Rename?\n// https://ts.dev/style/#naming-style\n// ClientApi? ClientProtocol?\nexport interface Echo extends MulticastObservable<Space[]> {\n /**\n * Resolves when the default space is available.\n */\n // TODO(wittjosiah): Remove. Ensure default space is always available.\n get isReady(): MulticastObservable<boolean>;\n\n /**\n * Returns the list of spaces.\n */\n get(): Space[];\n\n /**\n * Returns the space with the given key.\n */\n get(spaceKey: PublicKey): Space | undefined;\n\n /**\n * Returns the default space.\n */\n get default(): Space;\n\n /**\n * Creates a new space.\n */\n create(meta?: PropertiesProps): Promise<Space>;\n\n /**\n * Creates a space from the given snapshot.\n */\n // clone(snapshot: SpaceSnapshot): Promise<Space>;\n\n /**\n * Joins an existing space using the given invitation.\n */\n join(invitation: Invitation | string): AuthenticatingInvitation;\n\n /**\n * Query all spaces.\n * @param filter\n * @param options\n */\n query<T extends {} = any>(filter?: FilterSource<T>, options?: QueryOptions): Query<T>;\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport base from 'base-x';\n\nimport { schema } from '@dxos/protocols';\nimport { Invitation } from '@dxos/protocols/proto/dxos/client/services';\n\n// Encode with URL-safe alpha-numeric characters.\nconst base62 = base('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');\n\nconst codec = schema.getCodecForType('dxos.client.services.Invitation');\n\n/**\n * Encodes and decodes an invitation proto into/from alphanumeric chars.\n */\nexport class InvitationEncoder {\n static decode(text: string): Invitation {\n const decodedInvitation = codec.decode(base62.decode(text));\n if (decodedInvitation.type === Invitation.Type.MULTIUSE) {\n decodedInvitation.type = Invitation.Type.INTERACTIVE;\n decodedInvitation.multiUse = true;\n }\n return decodedInvitation;\n }\n\n static encode(invitation: Invitation): string {\n return base62.encode(\n codec.encode({\n invitationId: invitation.invitationId,\n type: invitation.type,\n kind: invitation.kind,\n authMethod: invitation.authMethod,\n swarmKey: invitation.swarmKey,\n state: invitation.state,\n timeout: invitation.timeout,\n guestKeypair: invitation.guestKeypair,\n // TODO(wittjosiah): Make these optional to encode for greater privacy.\n ...(invitation.spaceKey ? { spaceKey: invitation.spaceKey } : {}),\n ...(invitation.target ? { target: invitation.target } : {}),\n }),\n );\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { MulticastObservable, type Observable, type Subscriber } from '@dxos/async';\nimport { invariant } from '@dxos/invariant';\nimport { Invitation } from '@dxos/protocols/proto/dxos/client/services';\n\nexport const AUTHENTICATION_CODE_LENGTH = 6;\n\nexport const INVITATION_TIMEOUT = 3 * 60_000; // 3 mins.\n\nexport interface Invitations {\n created: MulticastObservable<CancellableInvitation[]>;\n accepted: MulticastObservable<AuthenticatingInvitation[]>;\n share(options?: Partial<Invitation>): CancellableInvitation;\n join(invitation: Invitation): AuthenticatingInvitation;\n}\n\n/**\n * Base class for all invitation observables and providers.\n */\nexport class CancellableInvitation extends MulticastObservable<Invitation> {\n private readonly _onCancel: () => Promise<void>;\n\n constructor({\n subscriber,\n initialInvitation,\n onCancel,\n }: {\n subscriber: Observable<Invitation> | Subscriber<Invitation>;\n initialInvitation: Invitation;\n onCancel: () => Promise<void>;\n }) {\n super(subscriber, initialInvitation);\n this._onCancel = onCancel;\n }\n\n cancel(): Promise<void> {\n return this._onCancel();\n }\n\n get expired() {\n const invitation = this.get();\n return (\n invitation.created &&\n invitation.lifetime &&\n invitation.lifetime !== 0 &&\n invitation.created.getTime() + invitation.lifetime * 1000 < Date.now()\n );\n }\n\n get expiry() {\n const invitation = this.get();\n return invitation.created && invitation.lifetime && invitation.lifetime !== 0\n ? new Date(invitation.created.getTime() + invitation.lifetime * 1000)\n : undefined;\n }\n}\n\n/**\n * Cancelable observer that relays authentication requests.\n */\nexport class AuthenticatingInvitation extends CancellableInvitation {\n private readonly _onAuthenticate: (authCode: string) => Promise<void>;\n\n constructor({\n subscriber,\n initialInvitation,\n onCancel,\n onAuthenticate,\n }: {\n subscriber: Observable<Invitation> | Subscriber<Invitation>;\n initialInvitation: Invitation;\n onCancel: () => Promise<void>;\n onAuthenticate: (authCode: string) => Promise<void>;\n }) {\n super({ subscriber, initialInvitation, onCancel });\n this._onAuthenticate = onAuthenticate;\n }\n\n async authenticate(authCode: string): Promise<void> {\n return this._onAuthenticate(authCode);\n }\n}\n\n/**\n * Testing util to wrap non-authenticating observable with promise.\n * Don't use this in production code.\n * @deprecated\n */\n// TODO(wittjosiah): Move to testing.\nexport const wrapObservable = async (observable: CancellableInvitation): Promise<Invitation> => {\n return new Promise((resolve, reject) => {\n const subscription = observable.subscribe(\n (invitation: Invitation | undefined) => {\n // TODO(burdon): Throw error if auth requested.\n invariant(invitation?.state === Invitation.State.SUCCESS);\n subscription.unsubscribe();\n resolve(invitation);\n },\n (err: Error) => {\n subscription.unsubscribe();\n reject(err);\n },\n );\n });\n};\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { type Event } from '@dxos/async';\nimport { type Context } from '@dxos/context';\nimport { schema } from '@dxos/protocols';\nimport { type FunctionRegistryService } from '@dxos/protocols/proto/dxos/agent/functions';\nimport {\n type IndexService,\n type DevicesService,\n type IdentityService,\n type InvitationsService,\n type LoggingService,\n type NetworkService,\n type SpacesService,\n type SystemService,\n} from '@dxos/protocols/proto/dxos/client/services';\nimport { type DevtoolsHost } from '@dxos/protocols/proto/dxos/devtools/host';\nimport { type DataService } from '@dxos/protocols/proto/dxos/echo/service';\nimport type { AppService, ShellService, WorkerService } from '@dxos/protocols/proto/dxos/iframe';\nimport type { BridgeService } from '@dxos/protocols/proto/dxos/mesh/bridge';\nimport { type TracingService } from '@dxos/protocols/proto/dxos/tracing';\nimport { createServiceBundle, type ServiceBundle } from '@dxos/rpc';\n\n//\n// NOTE: Should contain client/proxy dependencies only.\n//\n\nexport type ClientServices = {\n SystemService: SystemService;\n NetworkService: NetworkService;\n LoggingService: LoggingService;\n\n IdentityService: IdentityService;\n InvitationsService: InvitationsService;\n IndexService: IndexService;\n DevicesService: DevicesService;\n SpacesService: SpacesService;\n DataService: DataService;\n\n FunctionRegistryService: FunctionRegistryService;\n\n // TODO(burdon): Deprecated.\n DevtoolsHost: DevtoolsHost;\n\n TracingService: TracingService;\n};\n\n/**\n * Provide access to client services definitions and service handler.\n */\nexport interface ClientServicesProvider {\n /**\n * The connection to the services provider was termintaed.\n *\n * This should fire if the services disconnect unexpectedly or during a client reset.\n */\n closed: Event<Error | undefined>;\n descriptors: ServiceBundle<ClientServices>;\n services: Partial<ClientServices>;\n\n open(ctx: Context): Promise<void>;\n close(ctx: Context): Promise<void>;\n}\n\n/**\n * Services supported by host.\n */\nexport const clientServiceBundle = createServiceBundle<ClientServices>({\n SystemService: schema.getService('dxos.client.services.SystemService'),\n NetworkService: schema.getService('dxos.client.services.NetworkService'),\n LoggingService: schema.getService('dxos.client.services.LoggingService'),\n\n IdentityService: schema.getService('dxos.client.services.IdentityService'),\n IndexService: schema.getService('dxos.client.services.IndexService'),\n InvitationsService: schema.getService('dxos.client.services.InvitationsService'),\n DevicesService: schema.getService('dxos.client.services.DevicesService'),\n SpacesService: schema.getService('dxos.client.services.SpacesService'),\n DataService: schema.getService('dxos.echo.service.DataService'),\n\n // Agent-only.\n FunctionRegistryService: schema.getService('dxos.agent.functions.FunctionRegistryService'),\n\n // TODO(burdon): Deprecated.\n DevtoolsHost: schema.getService('dxos.devtools.host.DevtoolsHost'),\n\n TracingService: schema.getService('dxos.tracing.TracingService'),\n});\n\nexport type IframeServiceBundle = {\n BridgeService: BridgeService;\n};\n\nexport const iframeServiceBundle: ServiceBundle<IframeServiceBundle> = {\n BridgeService: schema.getService('dxos.mesh.bridge.BridgeService'),\n};\n\nexport type WorkerServiceBundle = {\n WorkerService: WorkerService;\n};\n\nexport const workerServiceBundle: ServiceBundle<WorkerServiceBundle> = {\n WorkerService: schema.getService('dxos.iframe.WorkerService'),\n};\n\nexport type AppServiceBundle = {\n AppService: AppService;\n};\n\nexport const appServiceBundle: ServiceBundle<AppServiceBundle> = {\n AppService: schema.getService('dxos.iframe.AppService'),\n};\n\nexport type ShellServiceBundle = {\n ShellService: ShellService;\n};\n\nexport const shellServiceBundle: ServiceBundle<ShellServiceBundle> = {\n ShellService: schema.getService('dxos.iframe.ShellService'),\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\n/**\n * Timeout for making rpc connections from remote proxies.\n */\nexport const PROXY_CONNECTION_TIMEOUT = 30_000;\n\n/**\n * Timeout for the device to be added to the trusted set during auth.\n */\nexport const AUTH_TIMEOUT = 30_000;\n\n/**\n * Timeout for how long the remote client will wait before assuming the connection is lost.\n */\nexport const STATUS_TIMEOUT = 10_000;\n\n/**\n * Timeout for waiting before stealing resource lock.\n */\nexport const RESOURCE_LOCK_TIMEOUT = 3_000;\n\n/**\n * Timeout for space properties to be loaded in the set of tracked items.\n * Accounts for latency between SpaceService reporting the space as READY and DataService streaming the item states.\n */\nexport const LOAD_PROPERTIES_TIMEOUT = 3_000;\n\n/**\n * Timeout for creating new spaces.\n */\nexport const CREATE_SPACE_TIMEOUT = 5_000;\n\n/**\n * Timeout for loading of control feeds.\n */\nexport const LOAD_CONTROL_FEEDS_TIMEOUT = 3_000;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { echoObject, S } from '@dxos/echo-schema';\n\nconst _Properties = S.struct({ name: S.optional(S.string) }, { key: S.string, value: S.any }).pipe(\n echoObject('dxos.sdk.client.Properties', '0.1.0'),\n);\nexport interface Properties extends S.Schema.Type<typeof _Properties> {}\nexport const Properties = _Properties;\n\nexport type PropertiesProps = {\n name?: string;\n};\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AEIA,oBAAiB;AAEjB,uBAAuB;AACvB,sBAA2B;ACH3B,mBAAsE;AACtE,uBAA0B;AAC1B,IAAAA,mBAA2B;ACA3B,IAAAC,oBAAuB;AAiBvB,iBAAwD;AEnBxD,yBAA8B;ANEvB,IAAMC,2BAA2B;AACjC,IAAMC,yBAAyB;AAC/B,IAAMC,wBAAwB;AAE9B,IAAMC,uBAAuB;AAC7B,IAAMC,oBAAoBD,uBAAuB;AAEjD,IAAME,0BAA0B;AAChC,IAAMC,gBAA6B;EAAEC,SAAS;AAAE;AAGvD,IAAMC,OAAO,OAAOC,YAAY,cAAcA,SAASC,KAAKF,QAAQ,KAAK;AAMlE,IAAMG,iBAAiB,CAACC,MAAcC,SAAiBC,OAA2BC,WACvF,GAAGH,IAAAA,YAAgBC,OAAAA,MAAaC,OAAO,IAAIA,IAAAA,KAAS;AAG/C,IAAME,YAAY,GAAGR,IAAAA;AAGrB,IAAMS,WAAW,GAAGT,IAAAA;AAIpB,IAAMU,UAAU,GAAGV,IAAAA;AAGnB,IAAMW,WAAW,GAAGX,IAAAA;AAGpB,IAAMY,aAAa;AAEnB,IAAMC,gBAAgB;AACtB,IAAMC,iBAAiB;AACvB,IAAMC,yBAAyB;AC5B/B,IAAMC,aAAa;ACN1B,IAAMC,aAASC,cAAAA,SAAK,gEAAA;AAEpB,IAAMC,QAAQC,wBAAOC,gBAAgB,iCAAA;AAK9B,IAAMC,oBAAN,MAAMA;EACX,OAAOC,OAAOC,MAA0B;AACtC,UAAMC,oBAAoBN,MAAMI,OAAON,OAAOM,OAAOC,IAAAA,CAAAA;AACrD,QAAIC,kBAAkBC,SAASC,2BAAWC,KAAKC,UAAU;AACvDJ,wBAAkBC,OAAOC,2BAAWC,KAAKE;AACzCL,wBAAkBM,WAAW;IAC/B;AACA,WAAON;EACT;EAEA,OAAOO,OAAOC,YAAgC;AAC5C,WAAOhB,OAAOe,OACZb,MAAMa,OAAO;MACXE,cAAcD,WAAWC;MACzBR,MAAMO,WAAWP;MACjBS,MAAMF,WAAWE;MACjBC,YAAYH,WAAWG;MACvBC,UAAUJ,WAAWI;MACrBC,OAAOL,WAAWK;MAClBC,SAASN,WAAWM;MACpBC,cAAcP,WAAWO;;MAEzB,GAAIP,WAAWQ,WAAW;QAAEA,UAAUR,WAAWQ;MAAS,IAAI,CAAC;MAC/D,GAAIR,WAAWS,SAAS;QAAEA,QAAQT,WAAWS;MAAO,IAAI,CAAC;IAC3D,CAAA,CAAA;EAEJ;AACF;;ACpCO,IAAMC,6BAA6B;AAEnC,IAAMC,qBAAqB,IAAI;AAY/B,IAAMC,wBAAN,cAAoCC,iCAAAA;EAGzCC,YAAY,EACVC,YACAC,mBACAC,SAAQ,GAKP;AACD,UAAMF,YAAYC,iBAAAA;AAClB,SAAKE,YAAYD;EACnB;EAEAE,SAAwB;AACtB,WAAO,KAAKD,UAAS;EACvB;EAEA,IAAIE,UAAU;AACZ,UAAMpB,aAAa,KAAKqB,IAAG;AAC3B,WACErB,WAAWsB,WACXtB,WAAWuB,YACXvB,WAAWuB,aAAa,KACxBvB,WAAWsB,QAAQE,QAAO,IAAKxB,WAAWuB,WAAW,MAAOE,KAAKC,IAAG;EAExE;EAEA,IAAIC,SAAS;AACX,UAAM3B,aAAa,KAAKqB,IAAG;AAC3B,WAAOrB,WAAWsB,WAAWtB,WAAWuB,YAAYvB,WAAWuB,aAAa,IACxE,IAAIE,KAAKzB,WAAWsB,QAAQE,QAAO,IAAKxB,WAAWuB,WAAW,GAAA,IAC9DjD;EACN;AACF;AAKO,IAAMsD,2BAAN,cAAuChB,sBAAAA;EAG5CE,YAAY,EACVC,YACAC,mBACAC,UACAY,eAAc,GAMb;AACD,UAAM;MAAEd;MAAYC;MAAmBC;IAAS,CAAA;AAChD,SAAKa,kBAAkBD;EACzB;EAEA,MAAME,aAAaC,UAAiC;AAClD,WAAO,KAAKF,gBAAgBE,QAAAA;EAC9B;AACF;AAQO,IAAMC,iBAAiB,OAAOC,eAAAA;AACnC,SAAO,IAAIC,QAAQ,CAACC,SAASC,WAAAA;AAC3B,UAAMC,eAAeJ,WAAWK,UAC9B,CAACvC,eAAAA;AAECwC,sCAAUxC,YAAYK,UAAUX,iBAAAA,WAAW+C,MAAMC,SAAO,QAAA;;;;;;;;;AACxDJ,mBAAaK,YAAW;AACxBP,cAAQpC,UAAAA;IACV,GACA,CAAC4C,QAAAA;AACCN,mBAAaK,YAAW;AACxBN,aAAOO,GAAAA;IACT,CAAA;EAEJ,CAAA;AACF;ACtCO,IAAMC,0BAAsBC,gCAAoC;EACrEC,eAAe5D,kBAAAA,OAAO6D,WAAW,oCAAA;EACjCC,gBAAgB9D,kBAAAA,OAAO6D,WAAW,qCAAA;EAClCE,gBAAgB/D,kBAAAA,OAAO6D,WAAW,qCAAA;EAElCG,iBAAiBhE,kBAAAA,OAAO6D,WAAW,sCAAA;EACnCI,cAAcjE,kBAAAA,OAAO6D,WAAW,mCAAA;EAChCK,oBAAoBlE,kBAAAA,OAAO6D,WAAW,yCAAA;EACtCM,gBAAgBnE,kBAAAA,OAAO6D,WAAW,qCAAA;EAClCO,eAAepE,kBAAAA,OAAO6D,WAAW,oCAAA;EACjCQ,aAAarE,kBAAAA,OAAO6D,WAAW,+BAAA;;EAG/BS,yBAAyBtE,kBAAAA,OAAO6D,WAAW,8CAAA;;EAG3CU,cAAcvE,kBAAAA,OAAO6D,WAAW,iCAAA;EAEhCW,gBAAgBxE,kBAAAA,OAAO6D,WAAW,6BAAA;AACpC,CAAA;AAMO,IAAMY,sBAA0D;EACrEC,eAAe1E,kBAAAA,OAAO6D,WAAW,gCAAA;AACnC;AAMO,IAAMc,sBAA0D;EACrEC,eAAe5E,kBAAAA,OAAO6D,WAAW,2BAAA;AACnC;AAMO,IAAMgB,mBAAoD;EAC/DC,YAAY9E,kBAAAA,OAAO6D,WAAW,wBAAA;AAChC;AAMO,IAAMkB,qBAAwD;EACnEC,cAAchF,kBAAAA,OAAO6D,WAAW,0BAAA;AAClC;ACjHO,IAAMoB,2BAA2B;AAKjC,IAAMC,eAAe;AAKrB,IAAMC,iBAAiB;AAKvB,IAAMC,wBAAwB;AAM9B,IAAMC,0BAA0B;AAKhC,IAAMC,uBAAuB;AAK7B,IAAMC,6BAA6B;AChC1C,IAAMC,cAAcC,qBAAEC,OAAO;EAAEC,MAAMF,qBAAEG,SAASH,qBAAEI,MAAM;AAAE,GAAG;EAAEC,KAAKL,qBAAEI;EAAQE,OAAON,qBAAEO;AAAI,CAAA,EAAGC,SAC5FC,+BAAW,8BAA8B,OAAA,CAAA;AAGpC,IAAMC,aAAaX;",
|
|
6
|
+
"names": ["import_services", "import_protocols", "DEFAULT_INTERNAL_CHANNEL", "DEFAULT_CLIENT_CHANNEL", "DEFAULT_SHELL_CHANNEL", "DEFAULT_VAULT_ORIGIN", "DEFAULT_VAULT_URL", "EXPECTED_CONFIG_VERSION", "defaultConfig", "version", "HOME", "process", "env", "getProfilePath", "root", "profile", "file", "undefined", "DX_CONFIG", "DX_CACHE", "DX_DATA", "DX_STATE", "DX_RUNTIME", "ENV_DX_CONFIG", "ENV_DX_PROFILE", "ENV_DX_PROFILE_DEFAULT", "defaultKey", "base62", "base", "codec", "schema", "getCodecForType", "InvitationEncoder", "decode", "text", "decodedInvitation", "type", "Invitation", "Type", "MULTIUSE", "INTERACTIVE", "multiUse", "encode", "invitation", "invitationId", "kind", "authMethod", "swarmKey", "state", "timeout", "guestKeypair", "spaceKey", "target", "AUTHENTICATION_CODE_LENGTH", "INVITATION_TIMEOUT", "CancellableInvitation", "MulticastObservable", "constructor", "subscriber", "initialInvitation", "onCancel", "_onCancel", "cancel", "expired", "get", "created", "lifetime", "getTime", "Date", "now", "expiry", "AuthenticatingInvitation", "onAuthenticate", "_onAuthenticate", "authenticate", "authCode", "wrapObservable", "observable", "Promise", "resolve", "reject", "subscription", "subscribe", "invariant", "State", "SUCCESS", "unsubscribe", "err", "clientServiceBundle", "createServiceBundle", "SystemService", "getService", "NetworkService", "LoggingService", "IdentityService", "IndexService", "InvitationsService", "DevicesService", "SpacesService", "DataService", "FunctionRegistryService", "DevtoolsHost", "TracingService", "iframeServiceBundle", "BridgeService", "workerServiceBundle", "WorkerService", "appServiceBundle", "AppService", "shellServiceBundle", "ShellService", "PROXY_CONNECTION_TIMEOUT", "AUTH_TIMEOUT", "STATUS_TIMEOUT", "RESOURCE_LOCK_TIMEOUT", "LOAD_PROPERTIES_TIMEOUT", "CREATE_SPACE_TIMEOUT", "LOAD_CONTROL_FEEDS_TIMEOUT", "_Properties", "S", "struct", "name", "optional", "string", "key", "value", "any", "pipe", "echoObject", "Properties"]
|
|
7
7
|
}
|
package/dist/lib/node/meta.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/sdk/client-protocol/src/config.ts":{"bytes":5856,"imports":[],"format":"esm"},"packages/sdk/client-protocol/src/echo.ts":{"bytes":
|
|
1
|
+
{"inputs":{"packages/sdk/client-protocol/src/config.ts":{"bytes":5856,"imports":[],"format":"esm"},"packages/sdk/client-protocol/src/echo.ts":{"bytes":3104,"imports":[],"format":"esm"},"packages/sdk/client-protocol/src/halo.ts":{"bytes":2737,"imports":[],"format":"esm"},"packages/sdk/client-protocol/src/invitations/encoder.ts":{"bytes":5401,"imports":[{"path":"base-x","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/client-protocol/src/invitations/invitations.ts":{"bytes":9484,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/client-protocol/src/invitations/index.ts":{"bytes":578,"imports":[{"path":"packages/sdk/client-protocol/src/invitations/encoder.ts","kind":"import-statement","original":"./encoder"},{"path":"packages/sdk/client-protocol/src/invitations/invitations.ts","kind":"import-statement","original":"./invitations"}],"format":"esm"},"packages/sdk/client-protocol/src/service-definitions.ts":{"bytes":8910,"imports":[{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/client-protocol/src/shell.ts":{"bytes":1064,"imports":[],"format":"esm"},"packages/sdk/client-protocol/src/space.ts":{"bytes":4027,"imports":[],"format":"esm"},"packages/sdk/client-protocol/src/timeouts.ts":{"bytes":3134,"imports":[],"format":"esm"},"packages/sdk/client-protocol/src/schema.ts":{"bytes":1602,"imports":[{"path":"@dxos/echo-schema","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/client-protocol/src/index.ts":{"bytes":1368,"imports":[{"path":"packages/sdk/client-protocol/src/config.ts","kind":"import-statement","original":"./config"},{"path":"packages/sdk/client-protocol/src/echo.ts","kind":"import-statement","original":"./echo"},{"path":"packages/sdk/client-protocol/src/halo.ts","kind":"import-statement","original":"./halo"},{"path":"packages/sdk/client-protocol/src/invitations/index.ts","kind":"import-statement","original":"./invitations"},{"path":"packages/sdk/client-protocol/src/service-definitions.ts","kind":"import-statement","original":"./service-definitions"},{"path":"packages/sdk/client-protocol/src/shell.ts","kind":"import-statement","original":"./shell"},{"path":"packages/sdk/client-protocol/src/space.ts","kind":"import-statement","original":"./space"},{"path":"packages/sdk/client-protocol/src/timeouts.ts","kind":"import-statement","original":"./timeouts"},{"path":"packages/sdk/client-protocol/src/schema.ts","kind":"import-statement","original":"./schema"}],"format":"esm"}},"outputs":{"packages/sdk/client-protocol/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":19501},"packages/sdk/client-protocol/dist/lib/node/index.cjs":{"imports":[{"path":"base-x","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true}],"exports":["AUTHENTICATION_CODE_LENGTH","AUTH_TIMEOUT","AuthenticatingInvitation","CREATE_SPACE_TIMEOUT","CancellableInvitation","DEFAULT_CLIENT_CHANNEL","DEFAULT_INTERNAL_CHANNEL","DEFAULT_SHELL_CHANNEL","DEFAULT_VAULT_ORIGIN","DEFAULT_VAULT_URL","DX_CACHE","DX_CONFIG","DX_DATA","DX_RUNTIME","DX_STATE","ENV_DX_CONFIG","ENV_DX_PROFILE","ENV_DX_PROFILE_DEFAULT","EXPECTED_CONFIG_VERSION","INVITATION_TIMEOUT","InvitationEncoder","LOAD_CONTROL_FEEDS_TIMEOUT","LOAD_PROPERTIES_TIMEOUT","PROXY_CONNECTION_TIMEOUT","Properties","RESOURCE_LOCK_TIMEOUT","STATUS_TIMEOUT","appServiceBundle","clientServiceBundle","defaultConfig","defaultKey","getProfilePath","iframeServiceBundle","shellServiceBundle","workerServiceBundle","wrapObservable"],"entryPoint":"packages/sdk/client-protocol/src/index.ts","inputs":{"packages/sdk/client-protocol/src/config.ts":{"bytesInOutput":797},"packages/sdk/client-protocol/src/index.ts":{"bytesInOutput":0},"packages/sdk/client-protocol/src/echo.ts":{"bytesInOutput":32},"packages/sdk/client-protocol/src/invitations/encoder.ts":{"bytesInOutput":1242},"packages/sdk/client-protocol/src/invitations/index.ts":{"bytesInOutput":0},"packages/sdk/client-protocol/src/invitations/invitations.ts":{"bytesInOutput":1941},"packages/sdk/client-protocol/src/service-definitions.ts":{"bytesInOutput":1499},"packages/sdk/client-protocol/src/timeouts.ts":{"bytesInOutput":224},"packages/sdk/client-protocol/src/schema.ts":{"bytesInOutput":236}},"bytes":7148}}}
|
package/dist/types/src/echo.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type { MulticastObservable } from '@dxos/async';
|
|
2
|
-
import type {
|
|
2
|
+
import type { FilterSource, Query } from '@dxos/echo-schema';
|
|
3
3
|
import type { PublicKey } from '@dxos/keys';
|
|
4
4
|
import type { Invitation } from '@dxos/protocols/proto/dxos/client/services';
|
|
5
|
+
import type { QueryOptions } from '@dxos/protocols/proto/dxos/echo/filter';
|
|
5
6
|
import type { AuthenticatingInvitation } from './invitations';
|
|
7
|
+
import type { PropertiesProps } from './schema';
|
|
6
8
|
import type { Space } from './space';
|
|
7
9
|
export declare const defaultKey = "__DEFAULT__";
|
|
8
10
|
/**
|
|
@@ -28,7 +30,7 @@ export interface Echo extends MulticastObservable<Space[]> {
|
|
|
28
30
|
/**
|
|
29
31
|
* Creates a new space.
|
|
30
32
|
*/
|
|
31
|
-
create(): Promise<Space>;
|
|
33
|
+
create(meta?: PropertiesProps): Promise<Space>;
|
|
32
34
|
/**
|
|
33
35
|
* Creates a space from the given snapshot.
|
|
34
36
|
*/
|
|
@@ -37,8 +39,10 @@ export interface Echo extends MulticastObservable<Space[]> {
|
|
|
37
39
|
*/
|
|
38
40
|
join(invitation: Invitation | string): AuthenticatingInvitation;
|
|
39
41
|
/**
|
|
40
|
-
*
|
|
42
|
+
* Query all spaces.
|
|
43
|
+
* @param filter
|
|
44
|
+
* @param options
|
|
41
45
|
*/
|
|
42
|
-
|
|
46
|
+
query<T extends {} = any>(filter?: FilterSource<T>, options?: QueryOptions): Query<T>;
|
|
43
47
|
}
|
|
44
48
|
//# sourceMappingURL=echo.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"echo.d.ts","sourceRoot":"","sources":["../../../src/echo.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"echo.d.ts","sourceRoot":"","sources":["../../../src/echo.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAE3E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAIrC,eAAO,MAAM,UAAU,gBAAgB,CAAC;AAExC;;GAEG;AAIH,MAAM,WAAW,IAAK,SAAQ,mBAAmB,CAAC,KAAK,EAAE,CAAC;IACxD;;OAEG;IAEH,IAAI,OAAO,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAE5C;;OAEG;IACH,GAAG,IAAI,KAAK,EAAE,CAAC;IAEf;;OAEG;IACH,GAAG,CAAC,QAAQ,EAAE,SAAS,GAAG,KAAK,GAAG,SAAS,CAAC;IAE5C;;OAEG;IACH,IAAI,OAAO,IAAI,KAAK,CAAC;IAErB;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAE/C;;OAEG;IAGH;;OAEG;IACH,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,GAAG,wBAAwB,CAAC;IAEhE;;;;OAIG;IACH,KAAK,CAAC,CAAC,SAAS,EAAE,GAAG,GAAG,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;CACvF"}
|
package/dist/types/src/halo.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { type MulticastObservable } from '@dxos/async';
|
|
1
|
+
import { type ObservableProvider, type MulticastObservable } from '@dxos/async';
|
|
2
|
+
import { type PublicKey } from '@dxos/keys';
|
|
2
3
|
import { type Contact, type Device, type Identity, type Invitation } from '@dxos/protocols/proto/dxos/client/services';
|
|
3
|
-
import { type ProfileDocument } from '@dxos/protocols/proto/dxos/halo/credentials';
|
|
4
|
+
import { type DeviceProfileDocument, type Credential, type Presentation, type ProfileDocument } from '@dxos/protocols/proto/dxos/halo/credentials';
|
|
4
5
|
import { type AuthenticatingInvitation, type CancellableInvitation } from './invitations';
|
|
5
6
|
/**
|
|
6
7
|
* TODO(burdon): Public API (move comments here).
|
|
@@ -11,10 +12,22 @@ export interface Halo {
|
|
|
11
12
|
get device(): Device | undefined;
|
|
12
13
|
get contacts(): MulticastObservable<Contact[]>;
|
|
13
14
|
get invitations(): MulticastObservable<CancellableInvitation[]>;
|
|
14
|
-
createIdentity(options?: ProfileDocument): Promise<Identity>;
|
|
15
|
+
createIdentity(options?: ProfileDocument, deviceProfile?: DeviceProfileDocument): Promise<Identity>;
|
|
15
16
|
recoverIdentity(recoveryKey: Uint8Array): Promise<Identity>;
|
|
16
17
|
updateProfile(profile: ProfileDocument): Promise<Identity>;
|
|
17
|
-
share(): CancellableInvitation;
|
|
18
|
-
join(invitation: Invitation): AuthenticatingInvitation;
|
|
18
|
+
share(options?: Partial<Invitation>): CancellableInvitation;
|
|
19
|
+
join(invitation: Invitation, deviceProfile?: DeviceProfileDocument): AuthenticatingInvitation;
|
|
20
|
+
queryCredentials(options?: {
|
|
21
|
+
ids?: PublicKey[];
|
|
22
|
+
type?: string;
|
|
23
|
+
}): ObservableProvider<{
|
|
24
|
+
onUpdate: (credentials: Credential[]) => void;
|
|
25
|
+
onError: (error?: Error) => void;
|
|
26
|
+
}, Credential[]>;
|
|
27
|
+
writeCredentials(credentials: Credential[]): Promise<void>;
|
|
28
|
+
presentCredentials(options: {
|
|
29
|
+
ids: PublicKey[];
|
|
30
|
+
nonce?: Uint8Array;
|
|
31
|
+
}): Promise<Presentation>;
|
|
19
32
|
}
|
|
20
33
|
//# sourceMappingURL=halo.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"halo.d.ts","sourceRoot":"","sources":["../../../src/halo.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"halo.d.ts","sourceRoot":"","sources":["../../../src/halo.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAE,MAAM,4CAA4C,CAAC;AACvH,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,eAAe,EACrB,MAAM,6CAA6C,CAAC;AAErD,OAAO,EAAE,KAAK,wBAAwB,EAAE,KAAK,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAE1F;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,IAAI,QAAQ,IAAI,mBAAmB,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IACrD,IAAI,OAAO,IAAI,mBAAmB,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7C,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAAC;IACjC,IAAI,QAAQ,IAAI,mBAAmB,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/C,IAAI,WAAW,IAAI,mBAAmB,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAEhE,cAAc,CAAC,OAAO,CAAC,EAAE,eAAe,EAAE,aAAa,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpG,eAAe,CAAC,WAAW,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5D,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE3D,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,qBAAqB,CAAC;IAC5D,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,CAAC,EAAE,qBAAqB,GAAG,wBAAwB,CAAC;IAG9F,gBAAgB,CAAC,OAAO,CAAC,EAAE;QACzB,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,kBAAkB,CACpB;QAAE,QAAQ,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;QAAC,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,CAAA;KAAE,EACnF,UAAU,EAAE,CACb,CAAC;IACF,gBAAgB,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,kBAAkB,CAAC,OAAO,EAAE;QAAE,GAAG,EAAE,SAAS,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,UAAU,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAC9F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../../../../src/invitations/encoder.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../../../../src/invitations/encoder.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AAOxE;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IASvC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM;CAiB9C"}
|
|
@@ -1,16 +1,26 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { S } from '@dxos/echo-schema';
|
|
2
|
+
declare const _Properties: S.Schema<{
|
|
3
|
+
[x: string]: any;
|
|
4
4
|
readonly id: string;
|
|
5
5
|
name?: string | undefined;
|
|
6
|
-
"composer.dxos.org.opened"?: number | undefined;
|
|
7
|
-
"composer.dxos.org.version"?: string | number | undefined;
|
|
8
|
-
"braneframe.Folder"?: E.AnyEchoObject | undefined;
|
|
9
6
|
}, {
|
|
7
|
+
[x: string]: any;
|
|
10
8
|
readonly id: string;
|
|
11
9
|
name?: string | undefined;
|
|
12
|
-
"composer.dxos.org.opened"?: number | undefined;
|
|
13
|
-
"composer.dxos.org.version"?: string | number | undefined;
|
|
14
|
-
"braneframe.Folder"?: E.AnyEchoObject | undefined;
|
|
15
10
|
}, never>;
|
|
11
|
+
export interface Properties extends S.Schema.Type<typeof _Properties> {
|
|
12
|
+
}
|
|
13
|
+
export declare const Properties: S.Schema<{
|
|
14
|
+
[x: string]: any;
|
|
15
|
+
readonly id: string;
|
|
16
|
+
name?: string | undefined;
|
|
17
|
+
}, {
|
|
18
|
+
[x: string]: any;
|
|
19
|
+
readonly id: string;
|
|
20
|
+
name?: string | undefined;
|
|
21
|
+
}, never>;
|
|
22
|
+
export type PropertiesProps = {
|
|
23
|
+
name?: string;
|
|
24
|
+
};
|
|
25
|
+
export {};
|
|
16
26
|
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/schema.ts"],"names":[],"mappings":"AAIA,OAAO,
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/schema.ts"],"names":[],"mappings":"AAIA,OAAO,EAAc,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAElD,QAAA,MAAM,WAAW;;;;;;;;SAEhB,CAAC;AACF,MAAM,WAAW,UAAW,SAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,WAAW,CAAC;CAAG;AACxE,eAAO,MAAM,UAAU;;;;;;;;SAAc,CAAC;AAEtC,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC"}
|
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
import { type MulticastObservable, type UnsubscribeCallback } from '@dxos/async';
|
|
2
|
-
import { type EchoDatabase, type
|
|
2
|
+
import { type EchoDatabase, type EchoReactiveObject } from '@dxos/echo-schema';
|
|
3
3
|
import { type PublicKey } from '@dxos/keys';
|
|
4
4
|
import { type Invitation, type Space as SpaceData, type SpaceMember, type SpaceState } from '@dxos/protocols/proto/dxos/client/services';
|
|
5
5
|
import { type SpaceSnapshot } from '@dxos/protocols/proto/dxos/echo/snapshot';
|
|
6
6
|
import { type GossipMessage } from '@dxos/protocols/proto/dxos/mesh/teleport/gossip';
|
|
7
7
|
import { type CancellableInvitation } from './invitations';
|
|
8
8
|
export interface SpaceInternal {
|
|
9
|
-
/**
|
|
10
|
-
* @deprecated
|
|
11
|
-
*/
|
|
12
|
-
get db(): never;
|
|
13
9
|
get data(): SpaceData;
|
|
14
10
|
/**
|
|
15
11
|
* Activates the space enabling the use of the database and starts replication with peers.
|
|
@@ -35,7 +31,7 @@ export interface Space {
|
|
|
35
31
|
/**
|
|
36
32
|
* Properties object.
|
|
37
33
|
*/
|
|
38
|
-
get properties():
|
|
34
|
+
get properties(): EchoReactiveObject<any>;
|
|
39
35
|
/**
|
|
40
36
|
* Current state of the space.
|
|
41
37
|
* The database is ready to be used in `SpaceState.READY` state.
|
|
@@ -48,6 +44,9 @@ export interface Space {
|
|
|
48
44
|
get pipeline(): MulticastObservable<SpaceData.PipelineState>;
|
|
49
45
|
get invitations(): MulticastObservable<CancellableInvitation[]>;
|
|
50
46
|
get members(): MulticastObservable<SpaceMember[]>;
|
|
47
|
+
/**
|
|
48
|
+
* @deprecated
|
|
49
|
+
*/
|
|
51
50
|
get internal(): SpaceInternal;
|
|
52
51
|
open(): Promise<void>;
|
|
53
52
|
close(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"space.d.ts","sourceRoot":"","sources":["../../../src/space.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"space.d.ts","sourceRoot":"","sources":["../../../src/space.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EACL,KAAK,UAAU,EACf,KAAK,KAAK,IAAI,SAAS,EACvB,KAAK,WAAW,EAChB,KAAK,UAAU,EAChB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAErF,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAE3D,MAAM,WAAW,aAAa;IAC5B,IAAI,IAAI,IAAI,SAAS,CAAC;IAEtB;;;OAGG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB;;;;OAIG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAGvB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7B,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnD;AAGD,MAAM,WAAW,KAAK;IACpB,IAAI,GAAG,IAAI,SAAS,CAAC;IAErB;;OAEG;IACH,IAAI,EAAE,IAAI,YAAY,CAAC;IACvB,IAAI,MAAM,IAAI,OAAO,CAAC;IAEtB;;OAEG;IACH,IAAI,UAAU,IAAI,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAE1C;;;;OAIG;IACH,IAAI,KAAK,IAAI,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAE7C;;OAEG;IACH,IAAI,QAAQ,IAAI,mBAAmB,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAE7D,IAAI,WAAW,IAAI,mBAAmB,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAChE,IAAI,OAAO,IAAI,mBAAmB,CAAC,WAAW,EAAE,CAAC,CAAC;IAElD;;OAEG;IAEH,IAAI,QAAQ,IAAI,aAAa,CAAC;IAE9B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;OAEG;IACH,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAGhC,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9D,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,KAAK,mBAAmB,CAAC;IAE7F,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,qBAAqB,CAAC;IAE5D,cAAc,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;CAC1C"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/client-protocol",
|
|
3
|
-
"version": "0.4.10-main.
|
|
3
|
+
"version": "0.4.10-main.fe71b4c",
|
|
4
4
|
"description": "Core DXOS Client API.",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -17,27 +17,22 @@
|
|
|
17
17
|
"src"
|
|
18
18
|
],
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@effect/schema": "0.64.7",
|
|
21
20
|
"base-x": "~3.0.9",
|
|
22
|
-
"
|
|
23
|
-
"@dxos/
|
|
24
|
-
"@dxos/config": "0.4.10-main.
|
|
25
|
-
"@dxos/
|
|
26
|
-
"@dxos/echo-db": "0.4.10-main.
|
|
27
|
-
"@dxos/
|
|
28
|
-
"@dxos/
|
|
29
|
-
"@dxos/echo-schema": "0.4.10-main.
|
|
30
|
-
"@dxos/
|
|
31
|
-
"@dxos/
|
|
32
|
-
"@dxos/rpc": "0.4.10-main.fa5a270"
|
|
21
|
+
"@dxos/async": "0.4.10-main.fe71b4c",
|
|
22
|
+
"@dxos/context": "0.4.10-main.fe71b4c",
|
|
23
|
+
"@dxos/config": "0.4.10-main.fe71b4c",
|
|
24
|
+
"@dxos/invariant": "0.4.10-main.fe71b4c",
|
|
25
|
+
"@dxos/echo-db": "0.4.10-main.fe71b4c",
|
|
26
|
+
"@dxos/keys": "0.4.10-main.fe71b4c",
|
|
27
|
+
"@dxos/node-std": "0.4.10-main.fe71b4c",
|
|
28
|
+
"@dxos/echo-schema": "0.4.10-main.fe71b4c",
|
|
29
|
+
"@dxos/protocols": "0.4.10-main.fe71b4c",
|
|
30
|
+
"@dxos/rpc": "0.4.10-main.fe71b4c"
|
|
33
31
|
},
|
|
34
32
|
"devDependencies": {
|
|
35
|
-
"@dxos/echo-typegen": "0.4.10-main.
|
|
33
|
+
"@dxos/echo-typegen": "0.4.10-main.fe71b4c"
|
|
36
34
|
},
|
|
37
35
|
"publishConfig": {
|
|
38
36
|
"access": "public"
|
|
39
|
-
},
|
|
40
|
-
"scripts": {
|
|
41
|
-
"prebuild": "dxtype src/proto/schema.proto src/proto/gen/schema.ts"
|
|
42
37
|
}
|
|
43
38
|
}
|
package/src/echo.ts
CHANGED
|
@@ -3,11 +3,13 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import type { MulticastObservable } from '@dxos/async';
|
|
6
|
-
import type {
|
|
6
|
+
import type { FilterSource, Query } from '@dxos/echo-schema';
|
|
7
7
|
import type { PublicKey } from '@dxos/keys';
|
|
8
8
|
import type { Invitation } from '@dxos/protocols/proto/dxos/client/services';
|
|
9
|
+
import type { QueryOptions } from '@dxos/protocols/proto/dxos/echo/filter';
|
|
9
10
|
|
|
10
11
|
import type { AuthenticatingInvitation } from './invitations';
|
|
12
|
+
import type { PropertiesProps } from './schema';
|
|
11
13
|
import type { Space } from './space';
|
|
12
14
|
|
|
13
15
|
// Space properties key for default metadata.
|
|
@@ -45,7 +47,7 @@ export interface Echo extends MulticastObservable<Space[]> {
|
|
|
45
47
|
/**
|
|
46
48
|
* Creates a new space.
|
|
47
49
|
*/
|
|
48
|
-
create(): Promise<Space>;
|
|
50
|
+
create(meta?: PropertiesProps): Promise<Space>;
|
|
49
51
|
|
|
50
52
|
/**
|
|
51
53
|
* Creates a space from the given snapshot.
|
|
@@ -58,8 +60,9 @@ export interface Echo extends MulticastObservable<Space[]> {
|
|
|
58
60
|
join(invitation: Invitation | string): AuthenticatingInvitation;
|
|
59
61
|
|
|
60
62
|
/**
|
|
61
|
-
*
|
|
63
|
+
* Query all spaces.
|
|
64
|
+
* @param filter
|
|
65
|
+
* @param options
|
|
62
66
|
*/
|
|
63
|
-
|
|
64
|
-
addSchema(schema: TypeCollection): void;
|
|
67
|
+
query<T extends {} = any>(filter?: FilterSource<T>, options?: QueryOptions): Query<T>;
|
|
65
68
|
}
|
package/src/halo.ts
CHANGED
|
@@ -2,9 +2,15 @@
|
|
|
2
2
|
// Copyright 2021 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import { type MulticastObservable } from '@dxos/async';
|
|
5
|
+
import { type ObservableProvider, type MulticastObservable } from '@dxos/async';
|
|
6
|
+
import { type PublicKey } from '@dxos/keys';
|
|
6
7
|
import { type Contact, type Device, type Identity, type Invitation } from '@dxos/protocols/proto/dxos/client/services';
|
|
7
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
type DeviceProfileDocument,
|
|
10
|
+
type Credential,
|
|
11
|
+
type Presentation,
|
|
12
|
+
type ProfileDocument,
|
|
13
|
+
} from '@dxos/protocols/proto/dxos/halo/credentials';
|
|
8
14
|
|
|
9
15
|
import { type AuthenticatingInvitation, type CancellableInvitation } from './invitations';
|
|
10
16
|
|
|
@@ -18,10 +24,21 @@ export interface Halo {
|
|
|
18
24
|
get contacts(): MulticastObservable<Contact[]>;
|
|
19
25
|
get invitations(): MulticastObservable<CancellableInvitation[]>;
|
|
20
26
|
|
|
21
|
-
createIdentity(options?: ProfileDocument): Promise<Identity>;
|
|
27
|
+
createIdentity(options?: ProfileDocument, deviceProfile?: DeviceProfileDocument): Promise<Identity>;
|
|
22
28
|
recoverIdentity(recoveryKey: Uint8Array): Promise<Identity>;
|
|
23
29
|
updateProfile(profile: ProfileDocument): Promise<Identity>;
|
|
24
30
|
|
|
25
|
-
share(): CancellableInvitation;
|
|
26
|
-
join(invitation: Invitation): AuthenticatingInvitation;
|
|
31
|
+
share(options?: Partial<Invitation>): CancellableInvitation;
|
|
32
|
+
join(invitation: Invitation, deviceProfile?: DeviceProfileDocument): AuthenticatingInvitation;
|
|
33
|
+
|
|
34
|
+
// TODO(wittjosiah): Migrate to multicast observable.
|
|
35
|
+
queryCredentials(options?: {
|
|
36
|
+
ids?: PublicKey[];
|
|
37
|
+
type?: string;
|
|
38
|
+
}): ObservableProvider<
|
|
39
|
+
{ onUpdate: (credentials: Credential[]) => void; onError: (error?: Error) => void },
|
|
40
|
+
Credential[]
|
|
41
|
+
>;
|
|
42
|
+
writeCredentials(credentials: Credential[]): Promise<void>;
|
|
43
|
+
presentCredentials(options: { ids: PublicKey[]; nonce?: Uint8Array }): Promise<Presentation>;
|
|
27
44
|
}
|
package/src/index.ts
CHANGED
|
@@ -6,9 +6,10 @@ export * from './config';
|
|
|
6
6
|
export * from './echo';
|
|
7
7
|
export * from './halo';
|
|
8
8
|
export * from './invitations';
|
|
9
|
-
export * from './proto';
|
|
10
9
|
export * from './service-definitions';
|
|
11
10
|
export * from './shell';
|
|
12
11
|
export * from './space';
|
|
13
12
|
export * from './timeouts';
|
|
14
13
|
export * from './schema';
|
|
14
|
+
|
|
15
|
+
// This comment is here to bust NX cache. Remove it after the code changes.
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import base from 'base-x';
|
|
6
6
|
|
|
7
7
|
import { schema } from '@dxos/protocols';
|
|
8
|
-
import {
|
|
8
|
+
import { Invitation } from '@dxos/protocols/proto/dxos/client/services';
|
|
9
9
|
|
|
10
10
|
// Encode with URL-safe alpha-numeric characters.
|
|
11
11
|
const base62 = base('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');
|
|
@@ -17,7 +17,12 @@ const codec = schema.getCodecForType('dxos.client.services.Invitation');
|
|
|
17
17
|
*/
|
|
18
18
|
export class InvitationEncoder {
|
|
19
19
|
static decode(text: string): Invitation {
|
|
20
|
-
|
|
20
|
+
const decodedInvitation = codec.decode(base62.decode(text));
|
|
21
|
+
if (decodedInvitation.type === Invitation.Type.MULTIUSE) {
|
|
22
|
+
decodedInvitation.type = Invitation.Type.INTERACTIVE;
|
|
23
|
+
decodedInvitation.multiUse = true;
|
|
24
|
+
}
|
|
25
|
+
return decodedInvitation;
|
|
21
26
|
}
|
|
22
27
|
|
|
23
28
|
static encode(invitation: Invitation): string {
|
|
@@ -30,6 +35,7 @@ export class InvitationEncoder {
|
|
|
30
35
|
swarmKey: invitation.swarmKey,
|
|
31
36
|
state: invitation.state,
|
|
32
37
|
timeout: invitation.timeout,
|
|
38
|
+
guestKeypair: invitation.guestKeypair,
|
|
33
39
|
// TODO(wittjosiah): Make these optional to encode for greater privacy.
|
|
34
40
|
...(invitation.spaceKey ? { spaceKey: invitation.spaceKey } : {}),
|
|
35
41
|
...(invitation.target ? { target: invitation.target } : {}),
|
package/src/schema.ts
CHANGED
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
// Copyright 2024 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import
|
|
5
|
+
import { echoObject, S } from '@dxos/echo-schema';
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
const _Properties = S.struct({ name: S.optional(S.string) }, { key: S.string, value: S.any }).pipe(
|
|
8
|
+
echoObject('dxos.sdk.client.Properties', '0.1.0'),
|
|
9
|
+
);
|
|
10
|
+
export interface Properties extends S.Schema.Type<typeof _Properties> {}
|
|
11
|
+
export const Properties = _Properties;
|
|
8
12
|
|
|
9
|
-
export
|
|
10
|
-
name
|
|
11
|
-
|
|
12
|
-
'composer.dxos.org.opened': S.optional(S.number),
|
|
13
|
-
'composer.dxos.org.version': S.optional(S.union(S.string, S.number)),
|
|
14
|
-
'braneframe.Folder': S.optional(E.ref(E.AnyEchoObject)),
|
|
15
|
-
}).pipe(E.echoObject('dxos.sdk.client.Properties', '0.1.0'));
|
|
13
|
+
export type PropertiesProps = {
|
|
14
|
+
name?: string;
|
|
15
|
+
};
|
package/src/space.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import { type MulticastObservable, type UnsubscribeCallback } from '@dxos/async';
|
|
6
|
-
import { type EchoDatabase, type
|
|
6
|
+
import { type EchoDatabase, type EchoReactiveObject } from '@dxos/echo-schema';
|
|
7
7
|
import { type PublicKey } from '@dxos/keys';
|
|
8
8
|
import {
|
|
9
9
|
type Invitation,
|
|
@@ -17,11 +17,6 @@ import { type GossipMessage } from '@dxos/protocols/proto/dxos/mesh/teleport/gos
|
|
|
17
17
|
import { type CancellableInvitation } from './invitations';
|
|
18
18
|
|
|
19
19
|
export interface SpaceInternal {
|
|
20
|
-
/**
|
|
21
|
-
* @deprecated
|
|
22
|
-
*/
|
|
23
|
-
get db(): never;
|
|
24
|
-
|
|
25
20
|
get data(): SpaceData;
|
|
26
21
|
|
|
27
22
|
/**
|
|
@@ -56,7 +51,7 @@ export interface Space {
|
|
|
56
51
|
/**
|
|
57
52
|
* Properties object.
|
|
58
53
|
*/
|
|
59
|
-
get properties():
|
|
54
|
+
get properties(): EchoReactiveObject<any>;
|
|
60
55
|
|
|
61
56
|
/**
|
|
62
57
|
* Current state of the space.
|
|
@@ -73,6 +68,10 @@ export interface Space {
|
|
|
73
68
|
get invitations(): MulticastObservable<CancellableInvitation[]>;
|
|
74
69
|
get members(): MulticastObservable<SpaceMember[]>;
|
|
75
70
|
|
|
71
|
+
/**
|
|
72
|
+
* @deprecated
|
|
73
|
+
*/
|
|
74
|
+
// TODO(wittjosiah): Remove. This should not be exposed.
|
|
76
75
|
get internal(): SpaceInternal;
|
|
77
76
|
|
|
78
77
|
open(): Promise<void>;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @generated @dxos/echo-typegen src/proto/schema.proto
|
|
3
|
-
**/
|
|
4
|
-
import * as dxos_echo_schema from "@dxos/echo-schema";
|
|
5
|
-
export declare const types: dxos_echo_schema.TypeCollection;
|
|
6
|
-
export type PropertiesProps = {
|
|
7
|
-
name: string;
|
|
8
|
-
};
|
|
9
|
-
export declare class Properties extends dxos_echo_schema.TypedObject<PropertiesProps> {
|
|
10
|
-
static readonly schema: dxos_echo_schema.Schema;
|
|
11
|
-
static filter(filter?: Partial<PropertiesProps> | dxos_echo_schema.OperatorFilter<Properties>): dxos_echo_schema.Filter<Properties>;
|
|
12
|
-
constructor(initValues?: Partial<PropertiesProps>, opts?: dxos_echo_schema.TypedObjectOptions);
|
|
13
|
-
name: string;
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../../src/proto/gen/schema.ts"],"names":[],"mappings":"AAAA;;IAEI;AAEJ,OAAO,KAAK,gBAAgB,MAAM,mBAAmB,CAAC;AAEtD,eAAO,MAAM,KAAK,iCAAwC,CAAC;AAE3D,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,qBAAa,UAAW,SAAQ,gBAAgB,CAAC,WAAW,CAAC,eAAe,CAAC;IAC3E,gBAAwB,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC;IAExD,MAAM,CAAC,MAAM,CACX,MAAM,CAAC,EACH,OAAO,CAAC,eAAe,CAAC,GACxB,gBAAgB,CAAC,cAAc,CAAC,UAAU,CAAC,GAC9C,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC;gBAQpC,UAAU,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,EACrC,IAAI,CAAC,EAAE,gBAAgB,CAAC,kBAAkB;IAIpC,IAAI,EAAE,MAAM,CAAC;CACtB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/proto/index.ts"],"names":[],"mappings":"AAIA,cAAc,cAAc,CAAC"}
|
package/src/proto/gen/schema.ts
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @generated @dxos/echo-typegen src/proto/schema.proto
|
|
3
|
-
**/
|
|
4
|
-
|
|
5
|
-
import * as dxos_echo_schema from "@dxos/echo-schema";
|
|
6
|
-
|
|
7
|
-
export const types = new dxos_echo_schema.TypeCollection();
|
|
8
|
-
|
|
9
|
-
export type PropertiesProps = {
|
|
10
|
-
name: string;
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
export class Properties extends dxos_echo_schema.TypedObject<PropertiesProps> {
|
|
14
|
-
declare static readonly schema: dxos_echo_schema.Schema;
|
|
15
|
-
|
|
16
|
-
static filter(
|
|
17
|
-
filter?:
|
|
18
|
-
| Partial<PropertiesProps>
|
|
19
|
-
| dxos_echo_schema.OperatorFilter<Properties>,
|
|
20
|
-
): dxos_echo_schema.Filter<Properties> {
|
|
21
|
-
return dxos_echo_schema.Filter.typename(
|
|
22
|
-
"dxos.sdk.client.Properties",
|
|
23
|
-
filter,
|
|
24
|
-
);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
constructor(
|
|
28
|
-
initValues?: Partial<PropertiesProps>,
|
|
29
|
-
opts?: dxos_echo_schema.TypedObjectOptions,
|
|
30
|
-
) {
|
|
31
|
-
super({ ...initValues }, { schema: Properties.schema, ...opts });
|
|
32
|
-
}
|
|
33
|
-
declare name: string;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
types.registerPrototype(Properties, {
|
|
37
|
-
typename: "dxos.sdk.client.Properties",
|
|
38
|
-
props: [{ id: "name", type: 1, repeated: false }],
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
types.link();
|
package/src/proto/index.ts
DELETED