@dxos/plugin-client 0.6.14-main.7bd9c89 → 0.6.14-staging.934c9de
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/{chunk-GOCCTV5N.mjs → chunk-3ESI7PGR.mjs} +2 -1
- package/dist/lib/browser/{chunk-GOCCTV5N.mjs.map → chunk-3ESI7PGR.mjs.map} +2 -2
- package/dist/lib/browser/index.mjs +18 -1
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/meta.mjs +1 -1
- package/dist/lib/node/{chunk-2SLZEXNL.cjs → chunk-ZWE6N7MY.cjs} +5 -4
- package/dist/lib/node/{chunk-2SLZEXNL.cjs.map → chunk-ZWE6N7MY.cjs.map} +2 -2
- package/dist/lib/node/index.cjs +29 -12
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/meta.cjs +4 -4
- package/dist/lib/node/meta.cjs.map +1 -1
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node-esm/{chunk-HMR23AKU.mjs → chunk-SZVMJZ6O.mjs} +2 -1
- package/dist/lib/node-esm/{chunk-HMR23AKU.mjs.map → chunk-SZVMJZ6O.mjs.map} +2 -2
- package/dist/lib/node-esm/index.mjs +18 -1
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/meta.mjs +1 -1
- package/dist/types/src/ClientPlugin.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +2 -1
- package/dist/types/src/meta.d.ts.map +1 -1
- package/package.json +16 -21
- package/src/ClientPlugin.tsx +18 -0
- package/src/meta.ts +1 -0
|
@@ -11,6 +11,7 @@ var ClientAction;
|
|
|
11
11
|
ClientAction2[ClientAction2["CREATE_IDENTITY"] = `${CLIENT_ACTION}/CREATE_IDENTITY`] = "CREATE_IDENTITY";
|
|
12
12
|
ClientAction2[ClientAction2["JOIN_IDENTITY"] = `${CLIENT_ACTION}/JOIN_IDENTITY`] = "JOIN_IDENTITY";
|
|
13
13
|
ClientAction2[ClientAction2["SHARE_IDENTITY"] = `${CLIENT_ACTION}/SHARE_IDENTITY`] = "SHARE_IDENTITY";
|
|
14
|
+
ClientAction2[ClientAction2["RECOVER_IDENTITY"] = `${CLIENT_ACTION}/RECOVER_IDENTITY`] = "RECOVER_IDENTITY";
|
|
14
15
|
})(ClientAction || (ClientAction = {}));
|
|
15
16
|
|
|
16
17
|
export {
|
|
@@ -18,4 +19,4 @@ export {
|
|
|
18
19
|
meta_default,
|
|
19
20
|
ClientAction
|
|
20
21
|
};
|
|
21
|
-
//# sourceMappingURL=chunk-
|
|
22
|
+
//# sourceMappingURL=chunk-3ESI7PGR.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/meta.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const CLIENT_PLUGIN = 'dxos.org/plugin/client';\n\nexport default {\n id: CLIENT_PLUGIN,\n name: 'Client',\n} satisfies PluginMeta;\n\nconst CLIENT_ACTION = `${CLIENT_PLUGIN}/action`;\nexport enum ClientAction {\n OPEN_SHELL = `${CLIENT_ACTION}/SHELL`,\n CREATE_IDENTITY = `${CLIENT_ACTION}/CREATE_IDENTITY`,\n JOIN_IDENTITY = `${CLIENT_ACTION}/JOIN_IDENTITY`,\n SHARE_IDENTITY = `${CLIENT_ACTION}/SHARE_IDENTITY`,\n}\n"],
|
|
5
|
-
"mappings": ";AAMO,IAAMA,gBAAgB;AAE7B,IAAA,eAAe;EACbC,IAAID;EACJE,MAAM;AACR;AAEA,IAAMC,gBAAgB,GAAGH,aAAAA;;UACbI,eAAAA;8CACG,GAAGD,aAAAA,QAAqB,IAAA;mDACnB,GAAGA,aAAAA,kBAA+B,IAAA;iDACpC,GAAGA,aAAAA,gBAA6B,IAAA;kDAC/B,GAAGA,aAAAA,iBAA8B,IAAA;
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const CLIENT_PLUGIN = 'dxos.org/plugin/client';\n\nexport default {\n id: CLIENT_PLUGIN,\n name: 'Client',\n} satisfies PluginMeta;\n\nconst CLIENT_ACTION = `${CLIENT_PLUGIN}/action`;\nexport enum ClientAction {\n OPEN_SHELL = `${CLIENT_ACTION}/SHELL`,\n CREATE_IDENTITY = `${CLIENT_ACTION}/CREATE_IDENTITY`,\n JOIN_IDENTITY = `${CLIENT_ACTION}/JOIN_IDENTITY`,\n SHARE_IDENTITY = `${CLIENT_ACTION}/SHARE_IDENTITY`,\n RECOVER_IDENTITY = `${CLIENT_ACTION}/RECOVER_IDENTITY`,\n}\n"],
|
|
5
|
+
"mappings": ";AAMO,IAAMA,gBAAgB;AAE7B,IAAA,eAAe;EACbC,IAAID;EACJE,MAAM;AACR;AAEA,IAAMC,gBAAgB,GAAGH,aAAAA;;UACbI,eAAAA;8CACG,GAAGD,aAAAA,QAAqB,IAAA;mDACnB,GAAGA,aAAAA,kBAA+B,IAAA;iDACpC,GAAGA,aAAAA,gBAA6B,IAAA;kDAC/B,GAAGA,aAAAA,iBAA8B,IAAA;oDAC/B,GAAGA,aAAAA,mBAAgC,IAAA;GAL5CC,iBAAAA,eAAAA,CAAAA,EAAAA;",
|
|
6
6
|
"names": ["CLIENT_PLUGIN", "id", "name", "CLIENT_ACTION", "ClientAction"]
|
|
7
7
|
}
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
CLIENT_PLUGIN,
|
|
3
3
|
ClientAction,
|
|
4
4
|
meta_default
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-3ESI7PGR.mjs";
|
|
6
6
|
|
|
7
7
|
// packages/plugins/plugin-client/src/ClientPlugin.tsx
|
|
8
8
|
import React from "react";
|
|
@@ -188,6 +188,23 @@ var ClientPlugin = ({ appKey, onClientInitialized, onReady, ...options }) => {
|
|
|
188
188
|
]
|
|
189
189
|
};
|
|
190
190
|
}
|
|
191
|
+
case ClientAction.RECOVER_IDENTITY: {
|
|
192
|
+
const data = await client.shell.recoverIdentity();
|
|
193
|
+
return {
|
|
194
|
+
data,
|
|
195
|
+
intents: [
|
|
196
|
+
[
|
|
197
|
+
{
|
|
198
|
+
// NOTE: This action is hardcoded to avoid circular dependency with observability plugin.
|
|
199
|
+
action: "dxos.org/plugin/observability/send-event",
|
|
200
|
+
data: {
|
|
201
|
+
name: "identity.recovered"
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
]
|
|
205
|
+
]
|
|
206
|
+
};
|
|
207
|
+
}
|
|
191
208
|
}
|
|
192
209
|
}
|
|
193
210
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/ClientPlugin.tsx", "../../../src/translations.ts", "../../../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Schema as S } from '@effect/schema';\nimport React from 'react';\n\nimport {\n filterPlugins,\n parseIntentPlugin,\n resolvePlugin,\n type GraphBuilderProvides,\n type IntentResolverProvides,\n type Plugin,\n type PluginDefinition,\n type TranslationsProvides,\n} from '@dxos/app-framework';\nimport { Config, Defaults, Envs, Local, Storage } from '@dxos/config';\nimport { registerSignalsRuntime } from '@dxos/echo-signals/react';\nimport { log } from '@dxos/log';\nimport { createExtension, type Node } from '@dxos/plugin-graph';\nimport { Client, type ClientOptions, ClientProvider } from '@dxos/react-client';\n\nimport meta, { CLIENT_PLUGIN, ClientAction } from './meta';\nimport translations from './translations';\n\nexport type ClientPluginOptions = ClientOptions & {\n /**\n * Used to track app-specific state in spaces.\n */\n appKey: string;\n\n /**\n * Run after the client has been initialized.\n */\n onClientInitialized?: (client: Client) => Promise<void>;\n\n /**\n * Run after the identity has been successfully initialized.\n * Run with client during plugin ready phase.\n */\n onReady?: (client: Client, plugins: Plugin[]) => Promise<void>;\n};\n\nexport type ClientPluginProvides = IntentResolverProvides &\n GraphBuilderProvides &\n TranslationsProvides & {\n client: Client;\n };\n\nexport const parseClientPlugin = (plugin?: Plugin) =>\n (plugin?.provides as any).client instanceof Client ? (plugin as Plugin<ClientPluginProvides>) : undefined;\n\nexport type SchemaProvides = {\n echo: {\n schema: S.Schema<any>[];\n };\n};\n\nexport const parseSchemaPlugin = (plugin?: Plugin) =>\n Array.isArray((plugin?.provides as any).echo?.schema) ? (plugin as Plugin<SchemaProvides>) : undefined;\n\nexport const ClientPlugin = ({\n appKey,\n onClientInitialized,\n onReady,\n ...options\n}: ClientPluginOptions): PluginDefinition<\n Omit<ClientPluginProvides, 'client'>,\n Pick<ClientPluginProvides, 'client'>\n> => {\n registerSignalsRuntime();\n\n let client: Client;\n let error: unknown = null;\n\n return {\n meta,\n initialize: async () => {\n const config = new Config(await Storage(), Envs(), Local(), Defaults());\n client = new Client({ config, ...options });\n\n try {\n await client.initialize();\n await onClientInitialized?.(client);\n\n // TODO(wittjosiah): Remove. This is a hack to get the app to boot with the new identity after a reset.\n client.reloaded.on(() => {\n client.halo.identity.subscribe(async (identity) => {\n if (identity) {\n window.location.href = window.location.origin;\n }\n });\n });\n } catch (err) {\n error = err;\n }\n\n return {\n client,\n context: ({ children }) => <ClientProvider client={client}>{children}</ClientProvider>,\n };\n },\n ready: async (plugins) => {\n if (error) {\n throw error;\n }\n\n await onReady?.(client, plugins);\n\n filterPlugins(plugins, parseSchemaPlugin).forEach((plugin) => {\n log('ready', { id: plugin.meta.id });\n client.addTypes(plugin.provides.echo.schema);\n });\n },\n unload: async () => {\n await client.destroy();\n },\n provides: {\n translations,\n graph: {\n builder: (plugins) => {\n const intentPlugin = resolvePlugin(plugins, parseIntentPlugin);\n const id = `${CLIENT_PLUGIN}/open-shell`;\n\n return createExtension({\n id: CLIENT_PLUGIN,\n filter: (node): node is Node<null> => node.id === 'root',\n actions: () => [\n {\n id,\n data: async () => {\n await intentPlugin?.provides.intent.dispatch([\n { plugin: CLIENT_PLUGIN, action: ClientAction.OPEN_SHELL },\n ]);\n },\n properties: {\n label: ['open shell label', { ns: CLIENT_PLUGIN }],\n icon: 'ph--address-book--regular',\n keyBinding: {\n macos: 'meta+shift+.',\n // TODO(wittjosiah): Test on windows to see if it behaves the same as linux.\n windows: 'alt+shift+.',\n linux: 'alt+shift+>',\n },\n testId: 'clientPlugin.openShell',\n },\n },\n ],\n });\n },\n },\n intent: {\n resolver: async (intent) => {\n switch (intent.action) {\n case ClientAction.OPEN_SHELL:\n await client.shell.open(intent.data?.layout);\n return { data: true };\n\n case ClientAction.CREATE_IDENTITY: {\n const data = await client.halo.createIdentity();\n return {\n data,\n intents: [\n [\n {\n // NOTE: This action is hardcoded to avoid circular dependency with observability plugin.\n action: 'dxos.org/plugin/observability/send-event',\n data: {\n name: 'identity.created',\n },\n },\n ],\n ],\n };\n }\n\n case ClientAction.JOIN_IDENTITY: {\n const data = await client.shell.joinIdentity({ invitationCode: intent.data?.invitationCode });\n return {\n data,\n intents: [\n [\n {\n // NOTE: This action is hardcoded to avoid circular dependency with observability plugin.\n action: 'dxos.org/plugin/observability/send-event',\n data: {\n name: 'identity.joined',\n },\n },\n ],\n ],\n };\n }\n\n case ClientAction.SHARE_IDENTITY: {\n const data = await client.shell.shareIdentity();\n return {\n data,\n intents: [\n [\n {\n // NOTE: This action is hardcoded to avoid circular dependency with observability plugin.\n action: 'dxos.org/plugin/observability/send-event',\n data: {\n name: 'identity.shared',\n properties: {\n deviceKey: data.device?.deviceKey.truncate(),\n deviceKind: data.device?.kind,\n error: data.error?.message,\n canceled: data.cancelled,\n },\n },\n },\n ],\n ],\n };\n }\n }\n },\n },\n },\n };\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { CLIENT_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [CLIENT_PLUGIN]: {\n 'open shell label': 'Open HALO',\n },\n },\n },\n];\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { ClientPlugin } from './ClientPlugin';\n\nexport default ClientPlugin;\n\nexport * from './ClientPlugin';\n"],
|
|
5
|
-
"mappings": "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
|
|
6
|
-
"names": ["React", "filterPlugins", "parseIntentPlugin", "resolvePlugin", "Config", "Defaults", "Envs", "Local", "Storage", "registerSignalsRuntime", "log", "createExtension", "Client", "ClientProvider", "CLIENT_PLUGIN", "parseClientPlugin", "plugin", "provides", "client", "Client", "undefined", "parseSchemaPlugin", "Array", "isArray", "echo", "schema", "ClientPlugin", "appKey", "onClientInitialized", "onReady", "options", "registerSignalsRuntime", "error", "meta", "initialize", "config", "Config", "Storage", "Envs", "Local", "Defaults", "reloaded", "on", "halo", "identity", "subscribe", "window", "location", "href", "origin", "err", "context", "children", "ClientProvider", "ready", "plugins", "filterPlugins", "forEach", "log", "id", "addTypes", "unload", "destroy", "translations", "graph", "builder", "intentPlugin", "resolvePlugin", "parseIntentPlugin", "CLIENT_PLUGIN", "createExtension", "filter", "node", "actions", "data", "intent", "dispatch", "action", "ClientAction", "OPEN_SHELL", "properties", "label", "ns", "icon", "keyBinding", "macos", "windows", "linux", "testId", "resolver", "shell", "open", "layout", "CREATE_IDENTITY", "createIdentity", "intents", "name", "JOIN_IDENTITY", "joinIdentity", "invitationCode", "SHARE_IDENTITY", "shareIdentity", "deviceKey", "device", "truncate", "deviceKind", "kind", "message", "canceled", "cancelled", "ClientPlugin"]
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Schema as S } from '@effect/schema';\nimport React from 'react';\n\nimport {\n filterPlugins,\n parseIntentPlugin,\n resolvePlugin,\n type GraphBuilderProvides,\n type IntentResolverProvides,\n type Plugin,\n type PluginDefinition,\n type TranslationsProvides,\n} from '@dxos/app-framework';\nimport { Config, Defaults, Envs, Local, Storage } from '@dxos/config';\nimport { registerSignalsRuntime } from '@dxos/echo-signals/react';\nimport { log } from '@dxos/log';\nimport { createExtension, type Node } from '@dxos/plugin-graph';\nimport { Client, type ClientOptions, ClientProvider } from '@dxos/react-client';\n\nimport meta, { CLIENT_PLUGIN, ClientAction } from './meta';\nimport translations from './translations';\n\nexport type ClientPluginOptions = ClientOptions & {\n /**\n * Used to track app-specific state in spaces.\n */\n appKey: string;\n\n /**\n * Run after the client has been initialized.\n */\n onClientInitialized?: (client: Client) => Promise<void>;\n\n /**\n * Run after the identity has been successfully initialized.\n * Run with client during plugin ready phase.\n */\n onReady?: (client: Client, plugins: Plugin[]) => Promise<void>;\n};\n\nexport type ClientPluginProvides = IntentResolverProvides &\n GraphBuilderProvides &\n TranslationsProvides & {\n client: Client;\n };\n\nexport const parseClientPlugin = (plugin?: Plugin) =>\n (plugin?.provides as any).client instanceof Client ? (plugin as Plugin<ClientPluginProvides>) : undefined;\n\nexport type SchemaProvides = {\n echo: {\n schema: S.Schema<any>[];\n };\n};\n\nexport const parseSchemaPlugin = (plugin?: Plugin) =>\n Array.isArray((plugin?.provides as any).echo?.schema) ? (plugin as Plugin<SchemaProvides>) : undefined;\n\nexport const ClientPlugin = ({\n appKey,\n onClientInitialized,\n onReady,\n ...options\n}: ClientPluginOptions): PluginDefinition<\n Omit<ClientPluginProvides, 'client'>,\n Pick<ClientPluginProvides, 'client'>\n> => {\n registerSignalsRuntime();\n\n let client: Client;\n let error: unknown = null;\n\n return {\n meta,\n initialize: async () => {\n const config = new Config(await Storage(), Envs(), Local(), Defaults());\n client = new Client({ config, ...options });\n\n try {\n await client.initialize();\n await onClientInitialized?.(client);\n\n // TODO(wittjosiah): Remove. This is a hack to get the app to boot with the new identity after a reset.\n client.reloaded.on(() => {\n client.halo.identity.subscribe(async (identity) => {\n if (identity) {\n window.location.href = window.location.origin;\n }\n });\n });\n } catch (err) {\n error = err;\n }\n\n return {\n client,\n context: ({ children }) => <ClientProvider client={client}>{children}</ClientProvider>,\n };\n },\n ready: async (plugins) => {\n if (error) {\n throw error;\n }\n\n await onReady?.(client, plugins);\n\n filterPlugins(plugins, parseSchemaPlugin).forEach((plugin) => {\n log('ready', { id: plugin.meta.id });\n client.addTypes(plugin.provides.echo.schema);\n });\n },\n unload: async () => {\n await client.destroy();\n },\n provides: {\n translations,\n graph: {\n builder: (plugins) => {\n const intentPlugin = resolvePlugin(plugins, parseIntentPlugin);\n const id = `${CLIENT_PLUGIN}/open-shell`;\n\n return createExtension({\n id: CLIENT_PLUGIN,\n filter: (node): node is Node<null> => node.id === 'root',\n actions: () => [\n {\n id,\n data: async () => {\n await intentPlugin?.provides.intent.dispatch([\n { plugin: CLIENT_PLUGIN, action: ClientAction.OPEN_SHELL },\n ]);\n },\n properties: {\n label: ['open shell label', { ns: CLIENT_PLUGIN }],\n icon: 'ph--address-book--regular',\n keyBinding: {\n macos: 'meta+shift+.',\n // TODO(wittjosiah): Test on windows to see if it behaves the same as linux.\n windows: 'alt+shift+.',\n linux: 'alt+shift+>',\n },\n testId: 'clientPlugin.openShell',\n },\n },\n ],\n });\n },\n },\n intent: {\n resolver: async (intent) => {\n switch (intent.action) {\n case ClientAction.OPEN_SHELL:\n await client.shell.open(intent.data?.layout);\n return { data: true };\n\n case ClientAction.CREATE_IDENTITY: {\n const data = await client.halo.createIdentity();\n return {\n data,\n intents: [\n [\n {\n // NOTE: This action is hardcoded to avoid circular dependency with observability plugin.\n action: 'dxos.org/plugin/observability/send-event',\n data: {\n name: 'identity.created',\n },\n },\n ],\n ],\n };\n }\n\n case ClientAction.JOIN_IDENTITY: {\n const data = await client.shell.joinIdentity({ invitationCode: intent.data?.invitationCode });\n return {\n data,\n intents: [\n [\n {\n // NOTE: This action is hardcoded to avoid circular dependency with observability plugin.\n action: 'dxos.org/plugin/observability/send-event',\n data: {\n name: 'identity.joined',\n },\n },\n ],\n ],\n };\n }\n\n case ClientAction.SHARE_IDENTITY: {\n const data = await client.shell.shareIdentity();\n return {\n data,\n intents: [\n [\n {\n // NOTE: This action is hardcoded to avoid circular dependency with observability plugin.\n action: 'dxos.org/plugin/observability/send-event',\n data: {\n name: 'identity.shared',\n properties: {\n deviceKey: data.device?.deviceKey.truncate(),\n deviceKind: data.device?.kind,\n error: data.error?.message,\n canceled: data.cancelled,\n },\n },\n },\n ],\n ],\n };\n }\n\n case ClientAction.RECOVER_IDENTITY: {\n const data = await client.shell.recoverIdentity();\n return {\n data,\n intents: [\n [\n {\n // NOTE: This action is hardcoded to avoid circular dependency with observability plugin.\n action: 'dxos.org/plugin/observability/send-event',\n data: {\n name: 'identity.recovered',\n },\n },\n ],\n ],\n };\n }\n }\n },\n },\n },\n };\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { CLIENT_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [CLIENT_PLUGIN]: {\n 'open shell label': 'Open HALO',\n },\n },\n },\n];\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { ClientPlugin } from './ClientPlugin';\n\nexport default ClientPlugin;\n\nexport * from './ClientPlugin';\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["React", "filterPlugins", "parseIntentPlugin", "resolvePlugin", "Config", "Defaults", "Envs", "Local", "Storage", "registerSignalsRuntime", "log", "createExtension", "Client", "ClientProvider", "CLIENT_PLUGIN", "parseClientPlugin", "plugin", "provides", "client", "Client", "undefined", "parseSchemaPlugin", "Array", "isArray", "echo", "schema", "ClientPlugin", "appKey", "onClientInitialized", "onReady", "options", "registerSignalsRuntime", "error", "meta", "initialize", "config", "Config", "Storage", "Envs", "Local", "Defaults", "reloaded", "on", "halo", "identity", "subscribe", "window", "location", "href", "origin", "err", "context", "children", "ClientProvider", "ready", "plugins", "filterPlugins", "forEach", "log", "id", "addTypes", "unload", "destroy", "translations", "graph", "builder", "intentPlugin", "resolvePlugin", "parseIntentPlugin", "CLIENT_PLUGIN", "createExtension", "filter", "node", "actions", "data", "intent", "dispatch", "action", "ClientAction", "OPEN_SHELL", "properties", "label", "ns", "icon", "keyBinding", "macos", "windows", "linux", "testId", "resolver", "shell", "open", "layout", "CREATE_IDENTITY", "createIdentity", "intents", "name", "JOIN_IDENTITY", "joinIdentity", "invitationCode", "SHARE_IDENTITY", "shareIdentity", "deviceKey", "device", "truncate", "deviceKind", "kind", "message", "canceled", "cancelled", "RECOVER_IDENTITY", "recoverIdentity", "ClientPlugin"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/plugins/plugin-client/src/meta.ts":{"bytes":
|
|
1
|
+
{"inputs":{"packages/plugins/plugin-client/src/meta.ts":{"bytes":2425,"imports":[],"format":"esm"},"packages/plugins/plugin-client/src/translations.ts":{"bytes":1043,"imports":[{"path":"packages/plugins/plugin-client/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-client/src/ClientPlugin.tsx":{"bytes":26482,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/config","kind":"import-statement","external":true},{"path":"@dxos/echo-signals/react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-client/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-client/src/translations.ts","kind":"import-statement","original":"./translations"}],"format":"esm"},"packages/plugins/plugin-client/src/index.ts":{"bytes":782,"imports":[{"path":"packages/plugins/plugin-client/src/ClientPlugin.tsx","kind":"import-statement","original":"./ClientPlugin"},{"path":"packages/plugins/plugin-client/src/ClientPlugin.tsx","kind":"import-statement","original":"./ClientPlugin"}],"format":"esm"}},"outputs":{"packages/plugins/plugin-client/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":12650},"packages/plugins/plugin-client/dist/lib/browser/index.mjs":{"imports":[{"path":"packages/plugins/plugin-client/dist/lib/browser/chunk-3ESI7PGR.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/config","kind":"import-statement","external":true},{"path":"@dxos/echo-signals/react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true}],"exports":["ClientPlugin","default","parseClientPlugin","parseSchemaPlugin"],"entryPoint":"packages/plugins/plugin-client/src/index.ts","inputs":{"packages/plugins/plugin-client/src/ClientPlugin.tsx":{"bytesInOutput":6564},"packages/plugins/plugin-client/src/translations.ts":{"bytesInOutput":134},"packages/plugins/plugin-client/src/index.ts":{"bytesInOutput":32}},"bytes":7163},"packages/plugins/plugin-client/dist/lib/browser/meta.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/plugins/plugin-client/dist/lib/browser/meta.mjs":{"imports":[{"path":"packages/plugins/plugin-client/dist/lib/browser/chunk-3ESI7PGR.mjs","kind":"import-statement"}],"exports":["CLIENT_PLUGIN","ClientAction","default"],"entryPoint":"packages/plugins/plugin-client/src/meta.ts","inputs":{},"bytes":193},"packages/plugins/plugin-client/dist/lib/browser/chunk-3ESI7PGR.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1057},"packages/plugins/plugin-client/dist/lib/browser/chunk-3ESI7PGR.mjs":{"imports":[],"exports":["CLIENT_PLUGIN","ClientAction","meta_default"],"inputs":{"packages/plugins/plugin-client/src/meta.ts":{"bytesInOutput":755}},"bytes":906}}}
|
|
@@ -16,13 +16,13 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
16
|
return to;
|
|
17
17
|
};
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var
|
|
20
|
-
__export(
|
|
19
|
+
var chunk_ZWE6N7MY_exports = {};
|
|
20
|
+
__export(chunk_ZWE6N7MY_exports, {
|
|
21
21
|
CLIENT_PLUGIN: () => CLIENT_PLUGIN,
|
|
22
22
|
ClientAction: () => ClientAction,
|
|
23
23
|
meta_default: () => meta_default
|
|
24
24
|
});
|
|
25
|
-
module.exports = __toCommonJS(
|
|
25
|
+
module.exports = __toCommonJS(chunk_ZWE6N7MY_exports);
|
|
26
26
|
var CLIENT_PLUGIN = "dxos.org/plugin/client";
|
|
27
27
|
var meta_default = {
|
|
28
28
|
id: CLIENT_PLUGIN,
|
|
@@ -35,6 +35,7 @@ var ClientAction;
|
|
|
35
35
|
ClientAction2[ClientAction2["CREATE_IDENTITY"] = `${CLIENT_ACTION}/CREATE_IDENTITY`] = "CREATE_IDENTITY";
|
|
36
36
|
ClientAction2[ClientAction2["JOIN_IDENTITY"] = `${CLIENT_ACTION}/JOIN_IDENTITY`] = "JOIN_IDENTITY";
|
|
37
37
|
ClientAction2[ClientAction2["SHARE_IDENTITY"] = `${CLIENT_ACTION}/SHARE_IDENTITY`] = "SHARE_IDENTITY";
|
|
38
|
+
ClientAction2[ClientAction2["RECOVER_IDENTITY"] = `${CLIENT_ACTION}/RECOVER_IDENTITY`] = "RECOVER_IDENTITY";
|
|
38
39
|
})(ClientAction || (ClientAction = {}));
|
|
39
40
|
// Annotate the CommonJS export names for ESM import in node:
|
|
40
41
|
0 && (module.exports = {
|
|
@@ -42,4 +43,4 @@ var ClientAction;
|
|
|
42
43
|
ClientAction,
|
|
43
44
|
meta_default
|
|
44
45
|
});
|
|
45
|
-
//# sourceMappingURL=chunk-
|
|
46
|
+
//# sourceMappingURL=chunk-ZWE6N7MY.cjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/meta.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const CLIENT_PLUGIN = 'dxos.org/plugin/client';\n\nexport default {\n id: CLIENT_PLUGIN,\n name: 'Client',\n} satisfies PluginMeta;\n\nconst CLIENT_ACTION = `${CLIENT_PLUGIN}/action`;\nexport enum ClientAction {\n OPEN_SHELL = `${CLIENT_ACTION}/SHELL`,\n CREATE_IDENTITY = `${CLIENT_ACTION}/CREATE_IDENTITY`,\n JOIN_IDENTITY = `${CLIENT_ACTION}/JOIN_IDENTITY`,\n SHARE_IDENTITY = `${CLIENT_ACTION}/SHARE_IDENTITY`,\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAMO,IAAMA,gBAAgB;AAE7B,IAAA,eAAe;EACbC,IAAID;EACJE,MAAM;AACR;AAEA,IAAMC,gBAAgB,GAAGH,aAAAA;;UACbI,eAAAA;8CACG,GAAGD,aAAAA,QAAqB,IAAA;mDACnB,GAAGA,aAAAA,kBAA+B,IAAA;iDACpC,GAAGA,aAAAA,gBAA6B,IAAA;kDAC/B,GAAGA,aAAAA,iBAA8B,IAAA;
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const CLIENT_PLUGIN = 'dxos.org/plugin/client';\n\nexport default {\n id: CLIENT_PLUGIN,\n name: 'Client',\n} satisfies PluginMeta;\n\nconst CLIENT_ACTION = `${CLIENT_PLUGIN}/action`;\nexport enum ClientAction {\n OPEN_SHELL = `${CLIENT_ACTION}/SHELL`,\n CREATE_IDENTITY = `${CLIENT_ACTION}/CREATE_IDENTITY`,\n JOIN_IDENTITY = `${CLIENT_ACTION}/JOIN_IDENTITY`,\n SHARE_IDENTITY = `${CLIENT_ACTION}/SHARE_IDENTITY`,\n RECOVER_IDENTITY = `${CLIENT_ACTION}/RECOVER_IDENTITY`,\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAMO,IAAMA,gBAAgB;AAE7B,IAAA,eAAe;EACbC,IAAID;EACJE,MAAM;AACR;AAEA,IAAMC,gBAAgB,GAAGH,aAAAA;;UACbI,eAAAA;8CACG,GAAGD,aAAAA,QAAqB,IAAA;mDACnB,GAAGA,aAAAA,kBAA+B,IAAA;iDACpC,GAAGA,aAAAA,gBAA6B,IAAA;kDAC/B,GAAGA,aAAAA,iBAA8B,IAAA;oDAC/B,GAAGA,aAAAA,mBAAgC,IAAA;GAL5CC,iBAAAA,eAAAA,CAAAA,EAAAA;",
|
|
6
6
|
"names": ["CLIENT_PLUGIN", "id", "name", "CLIENT_ACTION", "ClientAction"]
|
|
7
7
|
}
|
package/dist/lib/node/index.cjs
CHANGED
|
@@ -34,7 +34,7 @@ __export(node_exports, {
|
|
|
34
34
|
parseSchemaPlugin: () => parseSchemaPlugin
|
|
35
35
|
});
|
|
36
36
|
module.exports = __toCommonJS(node_exports);
|
|
37
|
-
var
|
|
37
|
+
var import_chunk_ZWE6N7MY = require("./chunk-ZWE6N7MY.cjs");
|
|
38
38
|
var import_react = __toESM(require("react"));
|
|
39
39
|
var import_app_framework = require("@dxos/app-framework");
|
|
40
40
|
var import_config = require("@dxos/config");
|
|
@@ -45,7 +45,7 @@ var import_react_client = require("@dxos/react-client");
|
|
|
45
45
|
var translations_default = [
|
|
46
46
|
{
|
|
47
47
|
"en-US": {
|
|
48
|
-
[
|
|
48
|
+
[import_chunk_ZWE6N7MY.CLIENT_PLUGIN]: {
|
|
49
49
|
"open shell label": "Open HALO"
|
|
50
50
|
}
|
|
51
51
|
}
|
|
@@ -59,7 +59,7 @@ var ClientPlugin = ({ appKey, onClientInitialized, onReady, ...options }) => {
|
|
|
59
59
|
let client;
|
|
60
60
|
let error = null;
|
|
61
61
|
return {
|
|
62
|
-
meta:
|
|
62
|
+
meta: import_chunk_ZWE6N7MY.meta_default,
|
|
63
63
|
initialize: async () => {
|
|
64
64
|
const config = new import_config.Config(await (0, import_config.Storage)(), (0, import_config.Envs)(), (0, import_config.Local)(), (0, import_config.Defaults)());
|
|
65
65
|
client = new import_react_client.Client({
|
|
@@ -111,9 +111,9 @@ var ClientPlugin = ({ appKey, onClientInitialized, onReady, ...options }) => {
|
|
|
111
111
|
graph: {
|
|
112
112
|
builder: (plugins) => {
|
|
113
113
|
const intentPlugin = (0, import_app_framework.resolvePlugin)(plugins, import_app_framework.parseIntentPlugin);
|
|
114
|
-
const id = `${
|
|
114
|
+
const id = `${import_chunk_ZWE6N7MY.CLIENT_PLUGIN}/open-shell`;
|
|
115
115
|
return (0, import_plugin_graph.createExtension)({
|
|
116
|
-
id:
|
|
116
|
+
id: import_chunk_ZWE6N7MY.CLIENT_PLUGIN,
|
|
117
117
|
filter: (node) => node.id === "root",
|
|
118
118
|
actions: () => [
|
|
119
119
|
{
|
|
@@ -121,8 +121,8 @@ var ClientPlugin = ({ appKey, onClientInitialized, onReady, ...options }) => {
|
|
|
121
121
|
data: async () => {
|
|
122
122
|
await intentPlugin?.provides.intent.dispatch([
|
|
123
123
|
{
|
|
124
|
-
plugin:
|
|
125
|
-
action:
|
|
124
|
+
plugin: import_chunk_ZWE6N7MY.CLIENT_PLUGIN,
|
|
125
|
+
action: import_chunk_ZWE6N7MY.ClientAction.OPEN_SHELL
|
|
126
126
|
}
|
|
127
127
|
]);
|
|
128
128
|
},
|
|
@@ -130,7 +130,7 @@ var ClientPlugin = ({ appKey, onClientInitialized, onReady, ...options }) => {
|
|
|
130
130
|
label: [
|
|
131
131
|
"open shell label",
|
|
132
132
|
{
|
|
133
|
-
ns:
|
|
133
|
+
ns: import_chunk_ZWE6N7MY.CLIENT_PLUGIN
|
|
134
134
|
}
|
|
135
135
|
],
|
|
136
136
|
icon: "ph--address-book--regular",
|
|
@@ -150,12 +150,12 @@ var ClientPlugin = ({ appKey, onClientInitialized, onReady, ...options }) => {
|
|
|
150
150
|
intent: {
|
|
151
151
|
resolver: async (intent) => {
|
|
152
152
|
switch (intent.action) {
|
|
153
|
-
case
|
|
153
|
+
case import_chunk_ZWE6N7MY.ClientAction.OPEN_SHELL:
|
|
154
154
|
await client.shell.open(intent.data?.layout);
|
|
155
155
|
return {
|
|
156
156
|
data: true
|
|
157
157
|
};
|
|
158
|
-
case
|
|
158
|
+
case import_chunk_ZWE6N7MY.ClientAction.CREATE_IDENTITY: {
|
|
159
159
|
const data = await client.halo.createIdentity();
|
|
160
160
|
return {
|
|
161
161
|
data,
|
|
@@ -172,7 +172,7 @@ var ClientPlugin = ({ appKey, onClientInitialized, onReady, ...options }) => {
|
|
|
172
172
|
]
|
|
173
173
|
};
|
|
174
174
|
}
|
|
175
|
-
case
|
|
175
|
+
case import_chunk_ZWE6N7MY.ClientAction.JOIN_IDENTITY: {
|
|
176
176
|
const data = await client.shell.joinIdentity({
|
|
177
177
|
invitationCode: intent.data?.invitationCode
|
|
178
178
|
});
|
|
@@ -191,7 +191,7 @@ var ClientPlugin = ({ appKey, onClientInitialized, onReady, ...options }) => {
|
|
|
191
191
|
]
|
|
192
192
|
};
|
|
193
193
|
}
|
|
194
|
-
case
|
|
194
|
+
case import_chunk_ZWE6N7MY.ClientAction.SHARE_IDENTITY: {
|
|
195
195
|
const data = await client.shell.shareIdentity();
|
|
196
196
|
return {
|
|
197
197
|
data,
|
|
@@ -214,6 +214,23 @@ var ClientPlugin = ({ appKey, onClientInitialized, onReady, ...options }) => {
|
|
|
214
214
|
]
|
|
215
215
|
};
|
|
216
216
|
}
|
|
217
|
+
case import_chunk_ZWE6N7MY.ClientAction.RECOVER_IDENTITY: {
|
|
218
|
+
const data = await client.shell.recoverIdentity();
|
|
219
|
+
return {
|
|
220
|
+
data,
|
|
221
|
+
intents: [
|
|
222
|
+
[
|
|
223
|
+
{
|
|
224
|
+
// NOTE: This action is hardcoded to avoid circular dependency with observability plugin.
|
|
225
|
+
action: "dxos.org/plugin/observability/send-event",
|
|
226
|
+
data: {
|
|
227
|
+
name: "identity.recovered"
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
]
|
|
231
|
+
]
|
|
232
|
+
};
|
|
233
|
+
}
|
|
217
234
|
}
|
|
218
235
|
}
|
|
219
236
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/ClientPlugin.tsx", "../../../src/translations.ts", "../../../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Schema as S } from '@effect/schema';\nimport React from 'react';\n\nimport {\n filterPlugins,\n parseIntentPlugin,\n resolvePlugin,\n type GraphBuilderProvides,\n type IntentResolverProvides,\n type Plugin,\n type PluginDefinition,\n type TranslationsProvides,\n} from '@dxos/app-framework';\nimport { Config, Defaults, Envs, Local, Storage } from '@dxos/config';\nimport { registerSignalsRuntime } from '@dxos/echo-signals/react';\nimport { log } from '@dxos/log';\nimport { createExtension, type Node } from '@dxos/plugin-graph';\nimport { Client, type ClientOptions, ClientProvider } from '@dxos/react-client';\n\nimport meta, { CLIENT_PLUGIN, ClientAction } from './meta';\nimport translations from './translations';\n\nexport type ClientPluginOptions = ClientOptions & {\n /**\n * Used to track app-specific state in spaces.\n */\n appKey: string;\n\n /**\n * Run after the client has been initialized.\n */\n onClientInitialized?: (client: Client) => Promise<void>;\n\n /**\n * Run after the identity has been successfully initialized.\n * Run with client during plugin ready phase.\n */\n onReady?: (client: Client, plugins: Plugin[]) => Promise<void>;\n};\n\nexport type ClientPluginProvides = IntentResolverProvides &\n GraphBuilderProvides &\n TranslationsProvides & {\n client: Client;\n };\n\nexport const parseClientPlugin = (plugin?: Plugin) =>\n (plugin?.provides as any).client instanceof Client ? (plugin as Plugin<ClientPluginProvides>) : undefined;\n\nexport type SchemaProvides = {\n echo: {\n schema: S.Schema<any>[];\n };\n};\n\nexport const parseSchemaPlugin = (plugin?: Plugin) =>\n Array.isArray((plugin?.provides as any).echo?.schema) ? (plugin as Plugin<SchemaProvides>) : undefined;\n\nexport const ClientPlugin = ({\n appKey,\n onClientInitialized,\n onReady,\n ...options\n}: ClientPluginOptions): PluginDefinition<\n Omit<ClientPluginProvides, 'client'>,\n Pick<ClientPluginProvides, 'client'>\n> => {\n registerSignalsRuntime();\n\n let client: Client;\n let error: unknown = null;\n\n return {\n meta,\n initialize: async () => {\n const config = new Config(await Storage(), Envs(), Local(), Defaults());\n client = new Client({ config, ...options });\n\n try {\n await client.initialize();\n await onClientInitialized?.(client);\n\n // TODO(wittjosiah): Remove. This is a hack to get the app to boot with the new identity after a reset.\n client.reloaded.on(() => {\n client.halo.identity.subscribe(async (identity) => {\n if (identity) {\n window.location.href = window.location.origin;\n }\n });\n });\n } catch (err) {\n error = err;\n }\n\n return {\n client,\n context: ({ children }) => <ClientProvider client={client}>{children}</ClientProvider>,\n };\n },\n ready: async (plugins) => {\n if (error) {\n throw error;\n }\n\n await onReady?.(client, plugins);\n\n filterPlugins(plugins, parseSchemaPlugin).forEach((plugin) => {\n log('ready', { id: plugin.meta.id });\n client.addTypes(plugin.provides.echo.schema);\n });\n },\n unload: async () => {\n await client.destroy();\n },\n provides: {\n translations,\n graph: {\n builder: (plugins) => {\n const intentPlugin = resolvePlugin(plugins, parseIntentPlugin);\n const id = `${CLIENT_PLUGIN}/open-shell`;\n\n return createExtension({\n id: CLIENT_PLUGIN,\n filter: (node): node is Node<null> => node.id === 'root',\n actions: () => [\n {\n id,\n data: async () => {\n await intentPlugin?.provides.intent.dispatch([\n { plugin: CLIENT_PLUGIN, action: ClientAction.OPEN_SHELL },\n ]);\n },\n properties: {\n label: ['open shell label', { ns: CLIENT_PLUGIN }],\n icon: 'ph--address-book--regular',\n keyBinding: {\n macos: 'meta+shift+.',\n // TODO(wittjosiah): Test on windows to see if it behaves the same as linux.\n windows: 'alt+shift+.',\n linux: 'alt+shift+>',\n },\n testId: 'clientPlugin.openShell',\n },\n },\n ],\n });\n },\n },\n intent: {\n resolver: async (intent) => {\n switch (intent.action) {\n case ClientAction.OPEN_SHELL:\n await client.shell.open(intent.data?.layout);\n return { data: true };\n\n case ClientAction.CREATE_IDENTITY: {\n const data = await client.halo.createIdentity();\n return {\n data,\n intents: [\n [\n {\n // NOTE: This action is hardcoded to avoid circular dependency with observability plugin.\n action: 'dxos.org/plugin/observability/send-event',\n data: {\n name: 'identity.created',\n },\n },\n ],\n ],\n };\n }\n\n case ClientAction.JOIN_IDENTITY: {\n const data = await client.shell.joinIdentity({ invitationCode: intent.data?.invitationCode });\n return {\n data,\n intents: [\n [\n {\n // NOTE: This action is hardcoded to avoid circular dependency with observability plugin.\n action: 'dxos.org/plugin/observability/send-event',\n data: {\n name: 'identity.joined',\n },\n },\n ],\n ],\n };\n }\n\n case ClientAction.SHARE_IDENTITY: {\n const data = await client.shell.shareIdentity();\n return {\n data,\n intents: [\n [\n {\n // NOTE: This action is hardcoded to avoid circular dependency with observability plugin.\n action: 'dxos.org/plugin/observability/send-event',\n data: {\n name: 'identity.shared',\n properties: {\n deviceKey: data.device?.deviceKey.truncate(),\n deviceKind: data.device?.kind,\n error: data.error?.message,\n canceled: data.cancelled,\n },\n },\n },\n ],\n ],\n };\n }\n }\n },\n },\n },\n };\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { CLIENT_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [CLIENT_PLUGIN]: {\n 'open shell label': 'Open HALO',\n },\n },\n },\n];\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { ClientPlugin } from './ClientPlugin';\n\nexport default ClientPlugin;\n\nexport * from './ClientPlugin';\n"],
|
|
5
|
-
"mappings": "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
|
|
6
|
-
"names": ["import_react", "CLIENT_PLUGIN", "parseClientPlugin", "plugin", "provides", "client", "Client", "undefined", "parseSchemaPlugin", "Array", "isArray", "echo", "schema", "ClientPlugin", "appKey", "onClientInitialized", "onReady", "options", "registerSignalsRuntime", "error", "meta", "initialize", "config", "Config", "Storage", "Envs", "Local", "Defaults", "reloaded", "on", "halo", "identity", "subscribe", "window", "location", "href", "origin", "err", "context", "children", "React", "ClientProvider", "ready", "plugins", "filterPlugins", "forEach", "log", "id", "addTypes", "unload", "destroy", "translations", "graph", "builder", "intentPlugin", "resolvePlugin", "parseIntentPlugin", "createExtension", "filter", "node", "actions", "data", "intent", "dispatch", "action", "ClientAction", "OPEN_SHELL", "properties", "label", "ns", "icon", "keyBinding", "macos", "windows", "linux", "testId", "resolver", "shell", "open", "layout", "CREATE_IDENTITY", "createIdentity", "intents", "name", "JOIN_IDENTITY", "joinIdentity", "invitationCode", "SHARE_IDENTITY", "shareIdentity", "deviceKey", "device", "truncate", "deviceKind", "kind", "message", "canceled", "cancelled"]
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Schema as S } from '@effect/schema';\nimport React from 'react';\n\nimport {\n filterPlugins,\n parseIntentPlugin,\n resolvePlugin,\n type GraphBuilderProvides,\n type IntentResolverProvides,\n type Plugin,\n type PluginDefinition,\n type TranslationsProvides,\n} from '@dxos/app-framework';\nimport { Config, Defaults, Envs, Local, Storage } from '@dxos/config';\nimport { registerSignalsRuntime } from '@dxos/echo-signals/react';\nimport { log } from '@dxos/log';\nimport { createExtension, type Node } from '@dxos/plugin-graph';\nimport { Client, type ClientOptions, ClientProvider } from '@dxos/react-client';\n\nimport meta, { CLIENT_PLUGIN, ClientAction } from './meta';\nimport translations from './translations';\n\nexport type ClientPluginOptions = ClientOptions & {\n /**\n * Used to track app-specific state in spaces.\n */\n appKey: string;\n\n /**\n * Run after the client has been initialized.\n */\n onClientInitialized?: (client: Client) => Promise<void>;\n\n /**\n * Run after the identity has been successfully initialized.\n * Run with client during plugin ready phase.\n */\n onReady?: (client: Client, plugins: Plugin[]) => Promise<void>;\n};\n\nexport type ClientPluginProvides = IntentResolverProvides &\n GraphBuilderProvides &\n TranslationsProvides & {\n client: Client;\n };\n\nexport const parseClientPlugin = (plugin?: Plugin) =>\n (plugin?.provides as any).client instanceof Client ? (plugin as Plugin<ClientPluginProvides>) : undefined;\n\nexport type SchemaProvides = {\n echo: {\n schema: S.Schema<any>[];\n };\n};\n\nexport const parseSchemaPlugin = (plugin?: Plugin) =>\n Array.isArray((plugin?.provides as any).echo?.schema) ? (plugin as Plugin<SchemaProvides>) : undefined;\n\nexport const ClientPlugin = ({\n appKey,\n onClientInitialized,\n onReady,\n ...options\n}: ClientPluginOptions): PluginDefinition<\n Omit<ClientPluginProvides, 'client'>,\n Pick<ClientPluginProvides, 'client'>\n> => {\n registerSignalsRuntime();\n\n let client: Client;\n let error: unknown = null;\n\n return {\n meta,\n initialize: async () => {\n const config = new Config(await Storage(), Envs(), Local(), Defaults());\n client = new Client({ config, ...options });\n\n try {\n await client.initialize();\n await onClientInitialized?.(client);\n\n // TODO(wittjosiah): Remove. This is a hack to get the app to boot with the new identity after a reset.\n client.reloaded.on(() => {\n client.halo.identity.subscribe(async (identity) => {\n if (identity) {\n window.location.href = window.location.origin;\n }\n });\n });\n } catch (err) {\n error = err;\n }\n\n return {\n client,\n context: ({ children }) => <ClientProvider client={client}>{children}</ClientProvider>,\n };\n },\n ready: async (plugins) => {\n if (error) {\n throw error;\n }\n\n await onReady?.(client, plugins);\n\n filterPlugins(plugins, parseSchemaPlugin).forEach((plugin) => {\n log('ready', { id: plugin.meta.id });\n client.addTypes(plugin.provides.echo.schema);\n });\n },\n unload: async () => {\n await client.destroy();\n },\n provides: {\n translations,\n graph: {\n builder: (plugins) => {\n const intentPlugin = resolvePlugin(plugins, parseIntentPlugin);\n const id = `${CLIENT_PLUGIN}/open-shell`;\n\n return createExtension({\n id: CLIENT_PLUGIN,\n filter: (node): node is Node<null> => node.id === 'root',\n actions: () => [\n {\n id,\n data: async () => {\n await intentPlugin?.provides.intent.dispatch([\n { plugin: CLIENT_PLUGIN, action: ClientAction.OPEN_SHELL },\n ]);\n },\n properties: {\n label: ['open shell label', { ns: CLIENT_PLUGIN }],\n icon: 'ph--address-book--regular',\n keyBinding: {\n macos: 'meta+shift+.',\n // TODO(wittjosiah): Test on windows to see if it behaves the same as linux.\n windows: 'alt+shift+.',\n linux: 'alt+shift+>',\n },\n testId: 'clientPlugin.openShell',\n },\n },\n ],\n });\n },\n },\n intent: {\n resolver: async (intent) => {\n switch (intent.action) {\n case ClientAction.OPEN_SHELL:\n await client.shell.open(intent.data?.layout);\n return { data: true };\n\n case ClientAction.CREATE_IDENTITY: {\n const data = await client.halo.createIdentity();\n return {\n data,\n intents: [\n [\n {\n // NOTE: This action is hardcoded to avoid circular dependency with observability plugin.\n action: 'dxos.org/plugin/observability/send-event',\n data: {\n name: 'identity.created',\n },\n },\n ],\n ],\n };\n }\n\n case ClientAction.JOIN_IDENTITY: {\n const data = await client.shell.joinIdentity({ invitationCode: intent.data?.invitationCode });\n return {\n data,\n intents: [\n [\n {\n // NOTE: This action is hardcoded to avoid circular dependency with observability plugin.\n action: 'dxos.org/plugin/observability/send-event',\n data: {\n name: 'identity.joined',\n },\n },\n ],\n ],\n };\n }\n\n case ClientAction.SHARE_IDENTITY: {\n const data = await client.shell.shareIdentity();\n return {\n data,\n intents: [\n [\n {\n // NOTE: This action is hardcoded to avoid circular dependency with observability plugin.\n action: 'dxos.org/plugin/observability/send-event',\n data: {\n name: 'identity.shared',\n properties: {\n deviceKey: data.device?.deviceKey.truncate(),\n deviceKind: data.device?.kind,\n error: data.error?.message,\n canceled: data.cancelled,\n },\n },\n },\n ],\n ],\n };\n }\n\n case ClientAction.RECOVER_IDENTITY: {\n const data = await client.shell.recoverIdentity();\n return {\n data,\n intents: [\n [\n {\n // NOTE: This action is hardcoded to avoid circular dependency with observability plugin.\n action: 'dxos.org/plugin/observability/send-event',\n data: {\n name: 'identity.recovered',\n },\n },\n ],\n ],\n };\n }\n }\n },\n },\n },\n };\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { CLIENT_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [CLIENT_PLUGIN]: {\n 'open shell label': 'Open HALO',\n },\n },\n },\n];\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { ClientPlugin } from './ClientPlugin';\n\nexport default ClientPlugin;\n\nexport * from './ClientPlugin';\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_react", "CLIENT_PLUGIN", "parseClientPlugin", "plugin", "provides", "client", "Client", "undefined", "parseSchemaPlugin", "Array", "isArray", "echo", "schema", "ClientPlugin", "appKey", "onClientInitialized", "onReady", "options", "registerSignalsRuntime", "error", "meta", "initialize", "config", "Config", "Storage", "Envs", "Local", "Defaults", "reloaded", "on", "halo", "identity", "subscribe", "window", "location", "href", "origin", "err", "context", "children", "React", "ClientProvider", "ready", "plugins", "filterPlugins", "forEach", "log", "id", "addTypes", "unload", "destroy", "translations", "graph", "builder", "intentPlugin", "resolvePlugin", "parseIntentPlugin", "createExtension", "filter", "node", "actions", "data", "intent", "dispatch", "action", "ClientAction", "OPEN_SHELL", "properties", "label", "ns", "icon", "keyBinding", "macos", "windows", "linux", "testId", "resolver", "shell", "open", "layout", "CREATE_IDENTITY", "createIdentity", "intents", "name", "JOIN_IDENTITY", "joinIdentity", "invitationCode", "SHARE_IDENTITY", "shareIdentity", "deviceKey", "device", "truncate", "deviceKind", "kind", "message", "canceled", "cancelled", "RECOVER_IDENTITY", "recoverIdentity"]
|
|
7
7
|
}
|
package/dist/lib/node/meta.cjs
CHANGED
|
@@ -18,12 +18,12 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var meta_exports = {};
|
|
20
20
|
__export(meta_exports, {
|
|
21
|
-
CLIENT_PLUGIN: () =>
|
|
22
|
-
ClientAction: () =>
|
|
23
|
-
default: () =>
|
|
21
|
+
CLIENT_PLUGIN: () => import_chunk_ZWE6N7MY.CLIENT_PLUGIN,
|
|
22
|
+
ClientAction: () => import_chunk_ZWE6N7MY.ClientAction,
|
|
23
|
+
default: () => import_chunk_ZWE6N7MY.meta_default
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(meta_exports);
|
|
26
|
-
var
|
|
26
|
+
var import_chunk_ZWE6N7MY = require("./chunk-ZWE6N7MY.cjs");
|
|
27
27
|
// Annotate the CommonJS export names for ESM import in node:
|
|
28
28
|
0 && (module.exports = {
|
|
29
29
|
CLIENT_PLUGIN,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["meta.cjs"],
|
|
4
|
-
"sourcesContent": ["import {\n CLIENT_PLUGIN,\n ClientAction,\n meta_default\n} from \"./chunk-
|
|
4
|
+
"sourcesContent": ["import {\n CLIENT_PLUGIN,\n ClientAction,\n meta_default\n} from \"./chunk-ZWE6N7MY.cjs\";\nexport {\n CLIENT_PLUGIN,\n ClientAction,\n meta_default as default\n};\n//# sourceMappingURL=meta.cjs.map\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAIO;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/lib/node/meta.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/plugins/plugin-client/src/meta.ts":{"bytes":
|
|
1
|
+
{"inputs":{"packages/plugins/plugin-client/src/meta.ts":{"bytes":2425,"imports":[],"format":"esm"},"packages/plugins/plugin-client/src/translations.ts":{"bytes":1043,"imports":[{"path":"packages/plugins/plugin-client/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-client/src/ClientPlugin.tsx":{"bytes":26482,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/config","kind":"import-statement","external":true},{"path":"@dxos/echo-signals/react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-client/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-client/src/translations.ts","kind":"import-statement","original":"./translations"}],"format":"esm"},"packages/plugins/plugin-client/src/index.ts":{"bytes":782,"imports":[{"path":"packages/plugins/plugin-client/src/ClientPlugin.tsx","kind":"import-statement","original":"./ClientPlugin"},{"path":"packages/plugins/plugin-client/src/ClientPlugin.tsx","kind":"import-statement","original":"./ClientPlugin"}],"format":"esm"}},"outputs":{"packages/plugins/plugin-client/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":12650},"packages/plugins/plugin-client/dist/lib/node/index.cjs":{"imports":[{"path":"packages/plugins/plugin-client/dist/lib/node/chunk-ZWE6N7MY.cjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/config","kind":"import-statement","external":true},{"path":"@dxos/echo-signals/react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true}],"exports":["ClientPlugin","default","parseClientPlugin","parseSchemaPlugin"],"entryPoint":"packages/plugins/plugin-client/src/index.ts","inputs":{"packages/plugins/plugin-client/src/ClientPlugin.tsx":{"bytesInOutput":6564},"packages/plugins/plugin-client/src/translations.ts":{"bytesInOutput":134},"packages/plugins/plugin-client/src/index.ts":{"bytesInOutput":32}},"bytes":7163},"packages/plugins/plugin-client/dist/lib/node/meta.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/plugins/plugin-client/dist/lib/node/meta.cjs":{"imports":[{"path":"packages/plugins/plugin-client/dist/lib/node/chunk-ZWE6N7MY.cjs","kind":"import-statement"}],"exports":["CLIENT_PLUGIN","ClientAction","default"],"entryPoint":"packages/plugins/plugin-client/src/meta.ts","inputs":{},"bytes":193},"packages/plugins/plugin-client/dist/lib/node/chunk-ZWE6N7MY.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1057},"packages/plugins/plugin-client/dist/lib/node/chunk-ZWE6N7MY.cjs":{"imports":[],"exports":["CLIENT_PLUGIN","ClientAction","meta_default"],"inputs":{"packages/plugins/plugin-client/src/meta.ts":{"bytesInOutput":755}},"bytes":906}}}
|
|
@@ -13,6 +13,7 @@ var ClientAction;
|
|
|
13
13
|
ClientAction2[ClientAction2["CREATE_IDENTITY"] = `${CLIENT_ACTION}/CREATE_IDENTITY`] = "CREATE_IDENTITY";
|
|
14
14
|
ClientAction2[ClientAction2["JOIN_IDENTITY"] = `${CLIENT_ACTION}/JOIN_IDENTITY`] = "JOIN_IDENTITY";
|
|
15
15
|
ClientAction2[ClientAction2["SHARE_IDENTITY"] = `${CLIENT_ACTION}/SHARE_IDENTITY`] = "SHARE_IDENTITY";
|
|
16
|
+
ClientAction2[ClientAction2["RECOVER_IDENTITY"] = `${CLIENT_ACTION}/RECOVER_IDENTITY`] = "RECOVER_IDENTITY";
|
|
16
17
|
})(ClientAction || (ClientAction = {}));
|
|
17
18
|
|
|
18
19
|
export {
|
|
@@ -20,4 +21,4 @@ export {
|
|
|
20
21
|
meta_default,
|
|
21
22
|
ClientAction
|
|
22
23
|
};
|
|
23
|
-
//# sourceMappingURL=chunk-
|
|
24
|
+
//# sourceMappingURL=chunk-SZVMJZ6O.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/meta.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const CLIENT_PLUGIN = 'dxos.org/plugin/client';\n\nexport default {\n id: CLIENT_PLUGIN,\n name: 'Client',\n} satisfies PluginMeta;\n\nconst CLIENT_ACTION = `${CLIENT_PLUGIN}/action`;\nexport enum ClientAction {\n OPEN_SHELL = `${CLIENT_ACTION}/SHELL`,\n CREATE_IDENTITY = `${CLIENT_ACTION}/CREATE_IDENTITY`,\n JOIN_IDENTITY = `${CLIENT_ACTION}/JOIN_IDENTITY`,\n SHARE_IDENTITY = `${CLIENT_ACTION}/SHARE_IDENTITY`,\n}\n"],
|
|
5
|
-
"mappings": ";;;AAMO,IAAMA,gBAAgB;AAE7B,IAAA,eAAe;EACbC,IAAID;EACJE,MAAM;AACR;AAEA,IAAMC,gBAAgB,GAAGH,aAAAA;;UACbI,eAAAA;8CACG,GAAGD,aAAAA,QAAqB,IAAA;mDACnB,GAAGA,aAAAA,kBAA+B,IAAA;iDACpC,GAAGA,aAAAA,gBAA6B,IAAA;kDAC/B,GAAGA,aAAAA,iBAA8B,IAAA;
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const CLIENT_PLUGIN = 'dxos.org/plugin/client';\n\nexport default {\n id: CLIENT_PLUGIN,\n name: 'Client',\n} satisfies PluginMeta;\n\nconst CLIENT_ACTION = `${CLIENT_PLUGIN}/action`;\nexport enum ClientAction {\n OPEN_SHELL = `${CLIENT_ACTION}/SHELL`,\n CREATE_IDENTITY = `${CLIENT_ACTION}/CREATE_IDENTITY`,\n JOIN_IDENTITY = `${CLIENT_ACTION}/JOIN_IDENTITY`,\n SHARE_IDENTITY = `${CLIENT_ACTION}/SHARE_IDENTITY`,\n RECOVER_IDENTITY = `${CLIENT_ACTION}/RECOVER_IDENTITY`,\n}\n"],
|
|
5
|
+
"mappings": ";;;AAMO,IAAMA,gBAAgB;AAE7B,IAAA,eAAe;EACbC,IAAID;EACJE,MAAM;AACR;AAEA,IAAMC,gBAAgB,GAAGH,aAAAA;;UACbI,eAAAA;8CACG,GAAGD,aAAAA,QAAqB,IAAA;mDACnB,GAAGA,aAAAA,kBAA+B,IAAA;iDACpC,GAAGA,aAAAA,gBAA6B,IAAA;kDAC/B,GAAGA,aAAAA,iBAA8B,IAAA;oDAC/B,GAAGA,aAAAA,mBAAgC,IAAA;GAL5CC,iBAAAA,eAAAA,CAAAA,EAAAA;",
|
|
6
6
|
"names": ["CLIENT_PLUGIN", "id", "name", "CLIENT_ACTION", "ClientAction"]
|
|
7
7
|
}
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
CLIENT_PLUGIN,
|
|
4
4
|
ClientAction,
|
|
5
5
|
meta_default
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-SZVMJZ6O.mjs";
|
|
7
7
|
|
|
8
8
|
// packages/plugins/plugin-client/src/ClientPlugin.tsx
|
|
9
9
|
import React from "react";
|
|
@@ -189,6 +189,23 @@ var ClientPlugin = ({ appKey, onClientInitialized, onReady, ...options }) => {
|
|
|
189
189
|
]
|
|
190
190
|
};
|
|
191
191
|
}
|
|
192
|
+
case ClientAction.RECOVER_IDENTITY: {
|
|
193
|
+
const data = await client.shell.recoverIdentity();
|
|
194
|
+
return {
|
|
195
|
+
data,
|
|
196
|
+
intents: [
|
|
197
|
+
[
|
|
198
|
+
{
|
|
199
|
+
// NOTE: This action is hardcoded to avoid circular dependency with observability plugin.
|
|
200
|
+
action: "dxos.org/plugin/observability/send-event",
|
|
201
|
+
data: {
|
|
202
|
+
name: "identity.recovered"
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
]
|
|
206
|
+
]
|
|
207
|
+
};
|
|
208
|
+
}
|
|
192
209
|
}
|
|
193
210
|
}
|
|
194
211
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/ClientPlugin.tsx", "../../../src/translations.ts", "../../../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Schema as S } from '@effect/schema';\nimport React from 'react';\n\nimport {\n filterPlugins,\n parseIntentPlugin,\n resolvePlugin,\n type GraphBuilderProvides,\n type IntentResolverProvides,\n type Plugin,\n type PluginDefinition,\n type TranslationsProvides,\n} from '@dxos/app-framework';\nimport { Config, Defaults, Envs, Local, Storage } from '@dxos/config';\nimport { registerSignalsRuntime } from '@dxos/echo-signals/react';\nimport { log } from '@dxos/log';\nimport { createExtension, type Node } from '@dxos/plugin-graph';\nimport { Client, type ClientOptions, ClientProvider } from '@dxos/react-client';\n\nimport meta, { CLIENT_PLUGIN, ClientAction } from './meta';\nimport translations from './translations';\n\nexport type ClientPluginOptions = ClientOptions & {\n /**\n * Used to track app-specific state in spaces.\n */\n appKey: string;\n\n /**\n * Run after the client has been initialized.\n */\n onClientInitialized?: (client: Client) => Promise<void>;\n\n /**\n * Run after the identity has been successfully initialized.\n * Run with client during plugin ready phase.\n */\n onReady?: (client: Client, plugins: Plugin[]) => Promise<void>;\n};\n\nexport type ClientPluginProvides = IntentResolverProvides &\n GraphBuilderProvides &\n TranslationsProvides & {\n client: Client;\n };\n\nexport const parseClientPlugin = (plugin?: Plugin) =>\n (plugin?.provides as any).client instanceof Client ? (plugin as Plugin<ClientPluginProvides>) : undefined;\n\nexport type SchemaProvides = {\n echo: {\n schema: S.Schema<any>[];\n };\n};\n\nexport const parseSchemaPlugin = (plugin?: Plugin) =>\n Array.isArray((plugin?.provides as any).echo?.schema) ? (plugin as Plugin<SchemaProvides>) : undefined;\n\nexport const ClientPlugin = ({\n appKey,\n onClientInitialized,\n onReady,\n ...options\n}: ClientPluginOptions): PluginDefinition<\n Omit<ClientPluginProvides, 'client'>,\n Pick<ClientPluginProvides, 'client'>\n> => {\n registerSignalsRuntime();\n\n let client: Client;\n let error: unknown = null;\n\n return {\n meta,\n initialize: async () => {\n const config = new Config(await Storage(), Envs(), Local(), Defaults());\n client = new Client({ config, ...options });\n\n try {\n await client.initialize();\n await onClientInitialized?.(client);\n\n // TODO(wittjosiah): Remove. This is a hack to get the app to boot with the new identity after a reset.\n client.reloaded.on(() => {\n client.halo.identity.subscribe(async (identity) => {\n if (identity) {\n window.location.href = window.location.origin;\n }\n });\n });\n } catch (err) {\n error = err;\n }\n\n return {\n client,\n context: ({ children }) => <ClientProvider client={client}>{children}</ClientProvider>,\n };\n },\n ready: async (plugins) => {\n if (error) {\n throw error;\n }\n\n await onReady?.(client, plugins);\n\n filterPlugins(plugins, parseSchemaPlugin).forEach((plugin) => {\n log('ready', { id: plugin.meta.id });\n client.addTypes(plugin.provides.echo.schema);\n });\n },\n unload: async () => {\n await client.destroy();\n },\n provides: {\n translations,\n graph: {\n builder: (plugins) => {\n const intentPlugin = resolvePlugin(plugins, parseIntentPlugin);\n const id = `${CLIENT_PLUGIN}/open-shell`;\n\n return createExtension({\n id: CLIENT_PLUGIN,\n filter: (node): node is Node<null> => node.id === 'root',\n actions: () => [\n {\n id,\n data: async () => {\n await intentPlugin?.provides.intent.dispatch([\n { plugin: CLIENT_PLUGIN, action: ClientAction.OPEN_SHELL },\n ]);\n },\n properties: {\n label: ['open shell label', { ns: CLIENT_PLUGIN }],\n icon: 'ph--address-book--regular',\n keyBinding: {\n macos: 'meta+shift+.',\n // TODO(wittjosiah): Test on windows to see if it behaves the same as linux.\n windows: 'alt+shift+.',\n linux: 'alt+shift+>',\n },\n testId: 'clientPlugin.openShell',\n },\n },\n ],\n });\n },\n },\n intent: {\n resolver: async (intent) => {\n switch (intent.action) {\n case ClientAction.OPEN_SHELL:\n await client.shell.open(intent.data?.layout);\n return { data: true };\n\n case ClientAction.CREATE_IDENTITY: {\n const data = await client.halo.createIdentity();\n return {\n data,\n intents: [\n [\n {\n // NOTE: This action is hardcoded to avoid circular dependency with observability plugin.\n action: 'dxos.org/plugin/observability/send-event',\n data: {\n name: 'identity.created',\n },\n },\n ],\n ],\n };\n }\n\n case ClientAction.JOIN_IDENTITY: {\n const data = await client.shell.joinIdentity({ invitationCode: intent.data?.invitationCode });\n return {\n data,\n intents: [\n [\n {\n // NOTE: This action is hardcoded to avoid circular dependency with observability plugin.\n action: 'dxos.org/plugin/observability/send-event',\n data: {\n name: 'identity.joined',\n },\n },\n ],\n ],\n };\n }\n\n case ClientAction.SHARE_IDENTITY: {\n const data = await client.shell.shareIdentity();\n return {\n data,\n intents: [\n [\n {\n // NOTE: This action is hardcoded to avoid circular dependency with observability plugin.\n action: 'dxos.org/plugin/observability/send-event',\n data: {\n name: 'identity.shared',\n properties: {\n deviceKey: data.device?.deviceKey.truncate(),\n deviceKind: data.device?.kind,\n error: data.error?.message,\n canceled: data.cancelled,\n },\n },\n },\n ],\n ],\n };\n }\n }\n },\n },\n },\n };\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { CLIENT_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [CLIENT_PLUGIN]: {\n 'open shell label': 'Open HALO',\n },\n },\n },\n];\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { ClientPlugin } from './ClientPlugin';\n\nexport default ClientPlugin;\n\nexport * from './ClientPlugin';\n"],
|
|
5
|
-
"mappings": ";;;;;;;;AAKA,OAAOA,WAAW;AAElB,SACEC,eACAC,mBACAC,qBAMK;AACP,SAASC,QAAQC,UAAUC,MAAMC,OAAOC,eAAe;AACvD,SAASC,8BAA8B;AACvC,SAASC,WAAW;AACpB,SAASC,uBAAkC;AAC3C,SAASC,QAA4BC,sBAAsB;;;ACf3D,IAAA,uBAAe;EACb;IACE,SAAS;MACP,CAACC,aAAAA,GAAgB;QACf,oBAAoB;MACtB;IACF;EACF;;;;;ADqCK,IAAMC,oBAAoB,CAACC,YAC/BA,QAAQC,UAAiBC,kBAAkBC,SAAUH,SAA0CI;AAQ3F,IAAMC,oBAAoB,CAACL,WAChCM,MAAMC,QAASP,QAAQC,SAAiBO,MAAMC,MAAAA,IAAWT,SAAoCI;AAExF,IAAMM,eAAe,CAAC,EAC3BC,QACAC,qBACAC,SACA,GAAGC,QAAAA,MACiB;AAIpBC,yBAAAA;AAEA,MAAIb;AACJ,MAAIc,QAAiB;AAErB,SAAO;IACLC;IACAC,YAAY,YAAA;AACV,YAAMC,SAAS,IAAIC,OAAO,MAAMC,QAAAA,GAAWC,KAAAA,GAAQC,MAAAA,GAASC,SAAAA,CAAAA;AAC5DtB,eAAS,IAAIC,OAAO;QAAEgB;QAAQ,GAAGL;MAAQ,CAAA;AAEzC,UAAI;AACF,cAAMZ,OAAOgB,WAAU;AACvB,cAAMN,sBAAsBV,MAAAA;AAG5BA,eAAOuB,SAASC,GAAG,MAAA;AACjBxB,iBAAOyB,KAAKC,SAASC,UAAU,OAAOD,aAAAA;AACpC,gBAAIA,UAAU;AACZE,qBAAOC,SAASC,OAAOF,OAAOC,SAASE;YACzC;UACF,CAAA;QACF,CAAA;MACF,SAASC,KAAK;AACZlB,gBAAQkB;MACV;AAEA,aAAO;QACLhC;QACAiC,SAAS,CAAC,EAAEC,SAAQ,MAAO,sBAAA,cAACC,gBAAAA;UAAenC;WAAiBkC,QAAAA;MAC9D;IACF;IACAE,OAAO,OAAOC,YAAAA;AACZ,UAAIvB,OAAO;AACT,cAAMA;MACR;AAEA,YAAMH,UAAUX,QAAQqC,OAAAA;AAExBC,oBAAcD,SAASlC,iBAAAA,EAAmBoC,QAAQ,CAACzC,WAAAA;AACjD0C,YAAI,SAAS;UAAEC,IAAI3C,OAAOiB,KAAK0B;QAAG,GAAA;;;;;;AAClCzC,eAAO0C,SAAS5C,OAAOC,SAASO,KAAKC,MAAM;MAC7C,CAAA;IACF;IACAoC,QAAQ,YAAA;AACN,YAAM3C,OAAO4C,QAAO;IACtB;IACA7C,UAAU;MACR8C;MACAC,OAAO;QACLC,SAAS,CAACV,YAAAA;AACR,gBAAMW,eAAeC,cAAcZ,SAASa,iBAAAA;AAC5C,gBAAMT,KAAK,GAAGU,aAAAA;AAEd,iBAAOC,gBAAgB;YACrBX,IAAIU;YACJE,QAAQ,CAACC,SAA6BA,KAAKb,OAAO;YAClDc,SAAS,MAAM;cACb;gBACEd;gBACAe,MAAM,YAAA;AACJ,wBAAMR,cAAcjD,SAAS0D,OAAOC,SAAS;oBAC3C;sBAAE5D,QAAQqD;sBAAeQ,QAAQC,aAAaC;oBAAW;mBAC1D;gBACH;gBACAC,YAAY;kBACVC,OAAO;oBAAC;oBAAoB;sBAAEC,IAAIb;oBAAc;;kBAChDc,MAAM;kBACNC,YAAY;oBACVC,OAAO;;oBAEPC,SAAS;oBACTC,OAAO;kBACT;kBACAC,QAAQ;gBACV;cACF;;UAEJ,CAAA;QACF;MACF;MACAb,QAAQ;QACNc,UAAU,OAAOd,WAAAA;AACf,kBAAQA,OAAOE,QAAM;YACnB,KAAKC,aAAaC;AAChB,oBAAM7D,OAAOwE,MAAMC,KAAKhB,OAAOD,MAAMkB,MAAAA;AACrC,qBAAO;gBAAElB,MAAM;cAAK;YAEtB,KAAKI,aAAae,iBAAiB;AACjC,oBAAMnB,OAAO,MAAMxD,OAAOyB,KAAKmD,eAAc;AAC7C,qBAAO;gBACLpB;gBACAqB,SAAS;kBACP;oBACE;;sBAEElB,QAAQ;sBACRH,MAAM;wBACJsB,MAAM;sBACR;oBACF;;;cAGN;YACF;YAEA,KAAKlB,aAAamB,eAAe;AAC/B,oBAAMvB,OAAO,MAAMxD,OAAOwE,MAAMQ,aAAa;gBAAEC,gBAAgBxB,OAAOD,MAAMyB;cAAe,CAAA;AAC3F,qBAAO;gBACLzB;gBACAqB,SAAS;kBACP;oBACE;;sBAEElB,QAAQ;sBACRH,MAAM;wBACJsB,MAAM;sBACR;oBACF;;;cAGN;YACF;YAEA,KAAKlB,aAAasB,gBAAgB;AAChC,oBAAM1B,OAAO,MAAMxD,OAAOwE,MAAMW,cAAa;AAC7C,qBAAO;gBACL3B;gBACAqB,SAAS;kBACP;oBACE;;sBAEElB,QAAQ;sBACRH,MAAM;wBACJsB,MAAM;wBACNhB,YAAY;0BACVsB,WAAW5B,KAAK6B,QAAQD,UAAUE,SAAAA;0BAClCC,YAAY/B,KAAK6B,QAAQG;0BACzB1E,OAAO0C,KAAK1C,OAAO2E;0BACnBC,UAAUlC,KAAKmC;wBACjB;sBACF;oBACF;;;cAGN;YACF;UACF;QACF;MACF;IACF;EACF;AACF;;;
|
|
6
|
-
"names": ["React", "filterPlugins", "parseIntentPlugin", "resolvePlugin", "Config", "Defaults", "Envs", "Local", "Storage", "registerSignalsRuntime", "log", "createExtension", "Client", "ClientProvider", "CLIENT_PLUGIN", "parseClientPlugin", "plugin", "provides", "client", "Client", "undefined", "parseSchemaPlugin", "Array", "isArray", "echo", "schema", "ClientPlugin", "appKey", "onClientInitialized", "onReady", "options", "registerSignalsRuntime", "error", "meta", "initialize", "config", "Config", "Storage", "Envs", "Local", "Defaults", "reloaded", "on", "halo", "identity", "subscribe", "window", "location", "href", "origin", "err", "context", "children", "ClientProvider", "ready", "plugins", "filterPlugins", "forEach", "log", "id", "addTypes", "unload", "destroy", "translations", "graph", "builder", "intentPlugin", "resolvePlugin", "parseIntentPlugin", "CLIENT_PLUGIN", "createExtension", "filter", "node", "actions", "data", "intent", "dispatch", "action", "ClientAction", "OPEN_SHELL", "properties", "label", "ns", "icon", "keyBinding", "macos", "windows", "linux", "testId", "resolver", "shell", "open", "layout", "CREATE_IDENTITY", "createIdentity", "intents", "name", "JOIN_IDENTITY", "joinIdentity", "invitationCode", "SHARE_IDENTITY", "shareIdentity", "deviceKey", "device", "truncate", "deviceKind", "kind", "message", "canceled", "cancelled", "ClientPlugin"]
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Schema as S } from '@effect/schema';\nimport React from 'react';\n\nimport {\n filterPlugins,\n parseIntentPlugin,\n resolvePlugin,\n type GraphBuilderProvides,\n type IntentResolverProvides,\n type Plugin,\n type PluginDefinition,\n type TranslationsProvides,\n} from '@dxos/app-framework';\nimport { Config, Defaults, Envs, Local, Storage } from '@dxos/config';\nimport { registerSignalsRuntime } from '@dxos/echo-signals/react';\nimport { log } from '@dxos/log';\nimport { createExtension, type Node } from '@dxos/plugin-graph';\nimport { Client, type ClientOptions, ClientProvider } from '@dxos/react-client';\n\nimport meta, { CLIENT_PLUGIN, ClientAction } from './meta';\nimport translations from './translations';\n\nexport type ClientPluginOptions = ClientOptions & {\n /**\n * Used to track app-specific state in spaces.\n */\n appKey: string;\n\n /**\n * Run after the client has been initialized.\n */\n onClientInitialized?: (client: Client) => Promise<void>;\n\n /**\n * Run after the identity has been successfully initialized.\n * Run with client during plugin ready phase.\n */\n onReady?: (client: Client, plugins: Plugin[]) => Promise<void>;\n};\n\nexport type ClientPluginProvides = IntentResolverProvides &\n GraphBuilderProvides &\n TranslationsProvides & {\n client: Client;\n };\n\nexport const parseClientPlugin = (plugin?: Plugin) =>\n (plugin?.provides as any).client instanceof Client ? (plugin as Plugin<ClientPluginProvides>) : undefined;\n\nexport type SchemaProvides = {\n echo: {\n schema: S.Schema<any>[];\n };\n};\n\nexport const parseSchemaPlugin = (plugin?: Plugin) =>\n Array.isArray((plugin?.provides as any).echo?.schema) ? (plugin as Plugin<SchemaProvides>) : undefined;\n\nexport const ClientPlugin = ({\n appKey,\n onClientInitialized,\n onReady,\n ...options\n}: ClientPluginOptions): PluginDefinition<\n Omit<ClientPluginProvides, 'client'>,\n Pick<ClientPluginProvides, 'client'>\n> => {\n registerSignalsRuntime();\n\n let client: Client;\n let error: unknown = null;\n\n return {\n meta,\n initialize: async () => {\n const config = new Config(await Storage(), Envs(), Local(), Defaults());\n client = new Client({ config, ...options });\n\n try {\n await client.initialize();\n await onClientInitialized?.(client);\n\n // TODO(wittjosiah): Remove. This is a hack to get the app to boot with the new identity after a reset.\n client.reloaded.on(() => {\n client.halo.identity.subscribe(async (identity) => {\n if (identity) {\n window.location.href = window.location.origin;\n }\n });\n });\n } catch (err) {\n error = err;\n }\n\n return {\n client,\n context: ({ children }) => <ClientProvider client={client}>{children}</ClientProvider>,\n };\n },\n ready: async (plugins) => {\n if (error) {\n throw error;\n }\n\n await onReady?.(client, plugins);\n\n filterPlugins(plugins, parseSchemaPlugin).forEach((plugin) => {\n log('ready', { id: plugin.meta.id });\n client.addTypes(plugin.provides.echo.schema);\n });\n },\n unload: async () => {\n await client.destroy();\n },\n provides: {\n translations,\n graph: {\n builder: (plugins) => {\n const intentPlugin = resolvePlugin(plugins, parseIntentPlugin);\n const id = `${CLIENT_PLUGIN}/open-shell`;\n\n return createExtension({\n id: CLIENT_PLUGIN,\n filter: (node): node is Node<null> => node.id === 'root',\n actions: () => [\n {\n id,\n data: async () => {\n await intentPlugin?.provides.intent.dispatch([\n { plugin: CLIENT_PLUGIN, action: ClientAction.OPEN_SHELL },\n ]);\n },\n properties: {\n label: ['open shell label', { ns: CLIENT_PLUGIN }],\n icon: 'ph--address-book--regular',\n keyBinding: {\n macos: 'meta+shift+.',\n // TODO(wittjosiah): Test on windows to see if it behaves the same as linux.\n windows: 'alt+shift+.',\n linux: 'alt+shift+>',\n },\n testId: 'clientPlugin.openShell',\n },\n },\n ],\n });\n },\n },\n intent: {\n resolver: async (intent) => {\n switch (intent.action) {\n case ClientAction.OPEN_SHELL:\n await client.shell.open(intent.data?.layout);\n return { data: true };\n\n case ClientAction.CREATE_IDENTITY: {\n const data = await client.halo.createIdentity();\n return {\n data,\n intents: [\n [\n {\n // NOTE: This action is hardcoded to avoid circular dependency with observability plugin.\n action: 'dxos.org/plugin/observability/send-event',\n data: {\n name: 'identity.created',\n },\n },\n ],\n ],\n };\n }\n\n case ClientAction.JOIN_IDENTITY: {\n const data = await client.shell.joinIdentity({ invitationCode: intent.data?.invitationCode });\n return {\n data,\n intents: [\n [\n {\n // NOTE: This action is hardcoded to avoid circular dependency with observability plugin.\n action: 'dxos.org/plugin/observability/send-event',\n data: {\n name: 'identity.joined',\n },\n },\n ],\n ],\n };\n }\n\n case ClientAction.SHARE_IDENTITY: {\n const data = await client.shell.shareIdentity();\n return {\n data,\n intents: [\n [\n {\n // NOTE: This action is hardcoded to avoid circular dependency with observability plugin.\n action: 'dxos.org/plugin/observability/send-event',\n data: {\n name: 'identity.shared',\n properties: {\n deviceKey: data.device?.deviceKey.truncate(),\n deviceKind: data.device?.kind,\n error: data.error?.message,\n canceled: data.cancelled,\n },\n },\n },\n ],\n ],\n };\n }\n\n case ClientAction.RECOVER_IDENTITY: {\n const data = await client.shell.recoverIdentity();\n return {\n data,\n intents: [\n [\n {\n // NOTE: This action is hardcoded to avoid circular dependency with observability plugin.\n action: 'dxos.org/plugin/observability/send-event',\n data: {\n name: 'identity.recovered',\n },\n },\n ],\n ],\n };\n }\n }\n },\n },\n },\n };\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { CLIENT_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [CLIENT_PLUGIN]: {\n 'open shell label': 'Open HALO',\n },\n },\n },\n];\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { ClientPlugin } from './ClientPlugin';\n\nexport default ClientPlugin;\n\nexport * from './ClientPlugin';\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["React", "filterPlugins", "parseIntentPlugin", "resolvePlugin", "Config", "Defaults", "Envs", "Local", "Storage", "registerSignalsRuntime", "log", "createExtension", "Client", "ClientProvider", "CLIENT_PLUGIN", "parseClientPlugin", "plugin", "provides", "client", "Client", "undefined", "parseSchemaPlugin", "Array", "isArray", "echo", "schema", "ClientPlugin", "appKey", "onClientInitialized", "onReady", "options", "registerSignalsRuntime", "error", "meta", "initialize", "config", "Config", "Storage", "Envs", "Local", "Defaults", "reloaded", "on", "halo", "identity", "subscribe", "window", "location", "href", "origin", "err", "context", "children", "ClientProvider", "ready", "plugins", "filterPlugins", "forEach", "log", "id", "addTypes", "unload", "destroy", "translations", "graph", "builder", "intentPlugin", "resolvePlugin", "parseIntentPlugin", "CLIENT_PLUGIN", "createExtension", "filter", "node", "actions", "data", "intent", "dispatch", "action", "ClientAction", "OPEN_SHELL", "properties", "label", "ns", "icon", "keyBinding", "macos", "windows", "linux", "testId", "resolver", "shell", "open", "layout", "CREATE_IDENTITY", "createIdentity", "intents", "name", "JOIN_IDENTITY", "joinIdentity", "invitationCode", "SHARE_IDENTITY", "shareIdentity", "deviceKey", "device", "truncate", "deviceKind", "kind", "message", "canceled", "cancelled", "RECOVER_IDENTITY", "recoverIdentity", "ClientPlugin"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/plugins/plugin-client/src/meta.ts":{"bytes":
|
|
1
|
+
{"inputs":{"packages/plugins/plugin-client/src/meta.ts":{"bytes":2425,"imports":[],"format":"esm"},"packages/plugins/plugin-client/src/translations.ts":{"bytes":1043,"imports":[{"path":"packages/plugins/plugin-client/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-client/src/ClientPlugin.tsx":{"bytes":26482,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/config","kind":"import-statement","external":true},{"path":"@dxos/echo-signals/react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-client/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-client/src/translations.ts","kind":"import-statement","original":"./translations"}],"format":"esm"},"packages/plugins/plugin-client/src/index.ts":{"bytes":782,"imports":[{"path":"packages/plugins/plugin-client/src/ClientPlugin.tsx","kind":"import-statement","original":"./ClientPlugin"},{"path":"packages/plugins/plugin-client/src/ClientPlugin.tsx","kind":"import-statement","original":"./ClientPlugin"}],"format":"esm"}},"outputs":{"packages/plugins/plugin-client/dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":12651},"packages/plugins/plugin-client/dist/lib/node-esm/index.mjs":{"imports":[{"path":"packages/plugins/plugin-client/dist/lib/node-esm/chunk-SZVMJZ6O.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/config","kind":"import-statement","external":true},{"path":"@dxos/echo-signals/react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true}],"exports":["ClientPlugin","default","parseClientPlugin","parseSchemaPlugin"],"entryPoint":"packages/plugins/plugin-client/src/index.ts","inputs":{"packages/plugins/plugin-client/src/ClientPlugin.tsx":{"bytesInOutput":6564},"packages/plugins/plugin-client/src/translations.ts":{"bytesInOutput":134},"packages/plugins/plugin-client/src/index.ts":{"bytesInOutput":32}},"bytes":7255},"packages/plugins/plugin-client/dist/lib/node-esm/meta.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/plugins/plugin-client/dist/lib/node-esm/meta.mjs":{"imports":[{"path":"packages/plugins/plugin-client/dist/lib/node-esm/chunk-SZVMJZ6O.mjs","kind":"import-statement"}],"exports":["CLIENT_PLUGIN","ClientAction","default"],"entryPoint":"packages/plugins/plugin-client/src/meta.ts","inputs":{},"bytes":285},"packages/plugins/plugin-client/dist/lib/node-esm/chunk-SZVMJZ6O.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1059},"packages/plugins/plugin-client/dist/lib/node-esm/chunk-SZVMJZ6O.mjs":{"imports":[],"exports":["CLIENT_PLUGIN","ClientAction","meta_default"],"inputs":{"packages/plugins/plugin-client/src/meta.ts":{"bytesInOutput":755}},"bytes":999}}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClientPlugin.d.ts","sourceRoot":"","sources":["../../../src/ClientPlugin.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,MAAM,IAAI,CAAC,EAAE,MAAM,gBAAgB,CAAC;AAGlD,OAAO,EAIL,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,MAAM,EACX,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EAC1B,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAkB,MAAM,oBAAoB,CAAC;AAKhF,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG;IAChD;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAExD;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAChE,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,sBAAsB,GACvD,oBAAoB,GACpB,oBAAoB,GAAG;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEJ,eAAO,MAAM,iBAAiB,YAAa,MAAM,6CAC0D,CAAC;AAE5G,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE;QACJ,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;KACzB,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,iBAAiB,YAAa,MAAM,uCACuD,CAAC;AAEzG,eAAO,MAAM,YAAY,yDAKtB,mBAAmB,KAAG,gBAAgB,CACvC,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC,EACpC,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"ClientPlugin.d.ts","sourceRoot":"","sources":["../../../src/ClientPlugin.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,MAAM,IAAI,CAAC,EAAE,MAAM,gBAAgB,CAAC;AAGlD,OAAO,EAIL,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,MAAM,EACX,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EAC1B,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAkB,MAAM,oBAAoB,CAAC;AAKhF,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG;IAChD;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAExD;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAChE,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,sBAAsB,GACvD,oBAAoB,GACpB,oBAAoB,GAAG;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEJ,eAAO,MAAM,iBAAiB,YAAa,MAAM,6CAC0D,CAAC;AAE5G,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE;QACJ,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;KACzB,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,iBAAiB,YAAa,MAAM,uCACuD,CAAC;AAEzG,eAAO,MAAM,YAAY,yDAKtB,mBAAmB,KAAG,gBAAgB,CACvC,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC,EACpC,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CA4KrC,CAAC"}
|
package/dist/types/src/meta.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export declare enum ClientAction {
|
|
|
8
8
|
OPEN_SHELL = "dxos.org/plugin/client/action/SHELL",
|
|
9
9
|
CREATE_IDENTITY = "dxos.org/plugin/client/action/CREATE_IDENTITY",
|
|
10
10
|
JOIN_IDENTITY = "dxos.org/plugin/client/action/JOIN_IDENTITY",
|
|
11
|
-
SHARE_IDENTITY = "dxos.org/plugin/client/action/SHARE_IDENTITY"
|
|
11
|
+
SHARE_IDENTITY = "dxos.org/plugin/client/action/SHARE_IDENTITY",
|
|
12
|
+
RECOVER_IDENTITY = "dxos.org/plugin/client/action/RECOVER_IDENTITY"
|
|
12
13
|
}
|
|
13
14
|
//# sourceMappingURL=meta.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../../src/meta.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,aAAa,2BAA2B,CAAC;;;;;AAEtD,wBAGuB;AAGvB,oBAAY,YAAY;IACtB,UAAU,wCAA2B;IACrC,eAAe,kDAAqC;IACpD,aAAa,gDAAmC;IAChD,cAAc,iDAAoC;
|
|
1
|
+
{"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../../src/meta.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,aAAa,2BAA2B,CAAC;;;;;AAEtD,wBAGuB;AAGvB,oBAAY,YAAY;IACtB,UAAU,wCAA2B;IACrC,eAAe,kDAAqC;IACpD,aAAa,gDAAmC;IAChD,cAAc,iDAAoC;IAClD,gBAAgB,mDAAsC;CACvD"}
|
package/package.json
CHANGED
|
@@ -1,27 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/plugin-client",
|
|
3
|
-
"version": "0.6.14-
|
|
3
|
+
"version": "0.6.14-staging.934c9de",
|
|
4
4
|
"description": "DXOS Surface plugin for DXOS Client",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
7
7
|
"license": "MIT",
|
|
8
8
|
"author": "DXOS.org",
|
|
9
|
+
"sideEffects": true,
|
|
9
10
|
"exports": {
|
|
10
11
|
".": {
|
|
12
|
+
"types": "./dist/types/src/index.d.ts",
|
|
11
13
|
"browser": "./dist/lib/browser/index.mjs",
|
|
12
|
-
"node":
|
|
13
|
-
"require": "./dist/lib/node/index.cjs",
|
|
14
|
-
"default": "./dist/lib/node-esm/index.mjs"
|
|
15
|
-
},
|
|
16
|
-
"types": "./dist/types/src/index.d.ts"
|
|
14
|
+
"node": "./dist/lib/node-esm/index.mjs"
|
|
17
15
|
},
|
|
18
16
|
"./meta": {
|
|
17
|
+
"types": "./dist/types/src/meta.d.ts",
|
|
19
18
|
"browser": "./dist/lib/browser/meta.mjs",
|
|
20
|
-
"node":
|
|
21
|
-
"require": "./dist/lib/node/meta.cjs",
|
|
22
|
-
"default": "./dist/lib/node-esm/meta.mjs"
|
|
23
|
-
},
|
|
24
|
-
"types": "./dist/types/src/meta.d.ts"
|
|
19
|
+
"node": "./dist/lib/node-esm/meta.mjs"
|
|
25
20
|
}
|
|
26
21
|
},
|
|
27
22
|
"types": "dist/types/src/index.d.ts",
|
|
@@ -38,15 +33,15 @@
|
|
|
38
33
|
],
|
|
39
34
|
"dependencies": {
|
|
40
35
|
"@phosphor-icons/react": "^2.1.5",
|
|
41
|
-
"@dxos/config": "0.6.14-
|
|
42
|
-
"@dxos/echo-schema": "0.6.14-
|
|
43
|
-
"@dxos/invariant": "0.6.14-
|
|
44
|
-
"@dxos/echo-signals": "0.6.14-
|
|
45
|
-
"@dxos/
|
|
46
|
-
"@dxos/
|
|
47
|
-
"@dxos/
|
|
48
|
-
"@dxos/
|
|
49
|
-
"@dxos/
|
|
36
|
+
"@dxos/config": "0.6.14-staging.934c9de",
|
|
37
|
+
"@dxos/echo-schema": "0.6.14-staging.934c9de",
|
|
38
|
+
"@dxos/invariant": "0.6.14-staging.934c9de",
|
|
39
|
+
"@dxos/echo-signals": "0.6.14-staging.934c9de",
|
|
40
|
+
"@dxos/log": "0.6.14-staging.934c9de",
|
|
41
|
+
"@dxos/local-storage": "0.6.14-staging.934c9de",
|
|
42
|
+
"@dxos/plugin-graph": "0.6.14-staging.934c9de",
|
|
43
|
+
"@dxos/react-client": "0.6.14-staging.934c9de",
|
|
44
|
+
"@dxos/app-framework": "0.6.14-staging.934c9de"
|
|
50
45
|
},
|
|
51
46
|
"devDependencies": {
|
|
52
47
|
"@types/react": "~18.2.0",
|
|
@@ -54,7 +49,7 @@
|
|
|
54
49
|
"react": "~18.2.0",
|
|
55
50
|
"react-dom": "~18.2.0",
|
|
56
51
|
"vite": "5.4.7",
|
|
57
|
-
"@dxos/storybook-utils": "0.6.14-
|
|
52
|
+
"@dxos/storybook-utils": "0.6.14-staging.934c9de"
|
|
58
53
|
},
|
|
59
54
|
"peerDependencies": {
|
|
60
55
|
"@phosphor-icons/react": "^2.1.5",
|
package/src/ClientPlugin.tsx
CHANGED
|
@@ -216,6 +216,24 @@ export const ClientPlugin = ({
|
|
|
216
216
|
],
|
|
217
217
|
};
|
|
218
218
|
}
|
|
219
|
+
|
|
220
|
+
case ClientAction.RECOVER_IDENTITY: {
|
|
221
|
+
const data = await client.shell.recoverIdentity();
|
|
222
|
+
return {
|
|
223
|
+
data,
|
|
224
|
+
intents: [
|
|
225
|
+
[
|
|
226
|
+
{
|
|
227
|
+
// NOTE: This action is hardcoded to avoid circular dependency with observability plugin.
|
|
228
|
+
action: 'dxos.org/plugin/observability/send-event',
|
|
229
|
+
data: {
|
|
230
|
+
name: 'identity.recovered',
|
|
231
|
+
},
|
|
232
|
+
},
|
|
233
|
+
],
|
|
234
|
+
],
|
|
235
|
+
};
|
|
236
|
+
}
|
|
219
237
|
}
|
|
220
238
|
},
|
|
221
239
|
},
|
package/src/meta.ts
CHANGED